NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南

2024-06-09 09:08

本文主要是介绍NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南


  • 转载请注明作者和出处:http://blog.csdn.net/u011475210
  • 嵌入式平台:NVIDIA Jetson TX1
  • 嵌入式系统:Ubuntu16.04
  • 虚拟机系统:Ubuntu14.04
  • 编者: WordZzzz

一、GSTREAMER-1.0 安装和配置

本部分内容将介绍如何安装和配置Gstreamer。
1.通过如下命令在开发板上安装Gstreamer-1.0:

sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

2.检查Gstreamer-1.0版本:

gst-inspect-1.0-version

Gstreamer 1.0版本包括以下gst-omx视频解码器:

Gstreamer 1.0版本包括以下gst-omx视频编码器:

Gstreamer 1.0版包括以下gst-omx视频接收器:

Gstreamer 1.0版包括以下egl图像视频接收器:

Gstreamer 1.0版包括以下专有的NVIDIA插件:

Gstreamer 1.0版包括以下基于libjpeg的JPEG图像视频编码/解码插件:

注意:在使用gst-launch或nvgstplayer启动视频解码流水线之前,在目标上执行以下命令。

export DISPLAY=:0

使用xinit启动X服务器(如果尚未运行)。
二、解码示例
本节中的示例显示了如何使用Gstreamer执行音频和视频解码。
注意:在Tegra(L4T)版本24.2的Linux中,Gstreamer版本0.10的支持已被弃用。 推荐使用Gstreamer 1.0版进行开发。
1.音频解码示例使用gst-launch-1.0
以下示例说明如何使用Gstreamer-1.0执行音频解码。
AAC解码(OSS软件解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.audio_0 ! queue ! avdec_aac ! audioconvert ! alsasink -e

AMR-WB解码(OSS软件解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.audio_0 ! queue ! avdec_amrwb ! audioconvert ! alsasink -e

AMR-NB解码(OSS软件解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.audio_0 ! queue ! avdec_amrnb ! audioconvert ! alsasink -e

MP3解码(OSS软件解码)

gst-launch-1.0 filesrc location=<filename.mp3> ! mpegaudioparse ! avdec_mp3 ! audioconvert ! alsasink -e

注意:要通过HDMI路由音频,请将alsasink属性设备设置为以下内容:

hw:Tegra,3

2.视频解码示例使用gst-launch-1.0
以下示例显示如何在Gstreamer-1.0上执行视频解码。
H.264解码(NVIDIA加速解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! omxh264dec ! nveglglessink -e

H.265解码(NVIDIA加速解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! h265parse ! omxh265dec ! nvoverlaysink -e

注意:解码H.265流需要gstreamer版本1.4.x或更高版本,包括对h265parse和qtdemux的支持。 有关详细信息,请参阅本指南中的Gstreamer构建说明。
VP8解码(NVIDIA加速解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvoverlaysink -e

注意:当您不使用主显示器来渲染视频时,请使用nvoverlaysink的display-id属性。 例如,请参考下面的管道。

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvoverlaysink display-id=1 -e

MPEG-4解码(NVIDIA加速解码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! mpeg4videoparse ! omxmpeg4videodec ! nveglglessink -e

图像解码

gst-launch-1.0 filesrc location=<filename.jpg> ! nvjpegdec ! imagefreeze ! xvimagesink -e

三、编码示例
本节中的示例显示了如何使用Gstreamer执行音频和视频编码。
1.音频编码示例使用gst-launch-1.0
以下示例显示如何在Gstreamer-1.0上执行音频编码。
AAC编码(OSS软件编码)

gst-launch-1.0 audiotestsrc ! 'audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)2' ! voaacenc ! qtmux ! filesink location=test.mp4 -e

AMR-WB编码(OSS软件编码)

gst-launch-1.0 audiotestsrc ! 'audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)16000, channels=(int)1' ! voamrwbenc ! qtmux ! filesink location=test.mp4 -e

2.视频编码示例使用gst-launch-1.0
以下示例说明如何使用Gstreamer-1.0执行视频编码。
H.264编码(NVIDIA加速编码)

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)I420, width=(int)640, height=(int)480' ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=test.mp4 -e

H.265编码(NVIDIA加速编码)

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)I420, width=(int)640, height=(int)480' ! omxh265enc ! filesink location=test.h265 -e

VP8编码(NVIDIA加速编码)

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)I420, width=(int)640, height=(int)480' ! omxvp8enc ! qtmux ! filesink location=test.mp4 -e

MPEG-4编码(OSS软件编码)

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)I420, width=(int)640, height=(int)480' ! avenc_mpeg4 ! qtmux ! filesink location=test.mp4 -e

H.263编码(OSS软件编码)

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)I420, width=(int)704, height=(int)576' ! avenc_h263 ! qtmux ! filesink location=test.mp4 -e

图像编码:

gst-launch-1.0 videotestsrc num-buffers=1 ! 'video/x-raw, width=(int)640, height=(int)480, format=(string)I420' ! nvjpegenc ! filesink location=test.jpg -e

3.支持使用Gstreamer-1.0的H.264编码器功能
本节介绍了NVIDIA加速H.264编码器支持的功能的gst-launch-1.0使用示例。
注意:使用gst-inspect-1.0 omxh264cc命令显示omxh264c编码器属性的详细信息。
设置I帧间隔:

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc iframeinterval=100 ! qtmux ! filesink location=test.mp4 -e

设置时间权衡(编码器应丢弃帧的速率)

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc temporal-tradeoff=1 ! qtmux ! filesink location=test.mp4 -e

设定速率控制模式:

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc control-rate=1 ! qtmux ! filesink location=test.mp4 -e

设置I,P和B帧的量化范围
范围的格式如下:

”<I_range>:<P_range>:<B_range>

其中,和各自表示为连字符值,如以下示例所示:

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc qp-range="10,30:10,35:10:35" ! qtmux ! filesink location=test.mp4 -e

设置质量水平

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc quality-level=0 ! qtmux ! filesink location=test.mp4 -e

设置配置文件

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc profile=8 ! qtmux ! filesink location=test.mp4 -e

设置两个参考帧之间设置的B帧数

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc num-B-Frames=2 ! qtmux ! filesink location=test.mp4e

在IDR插入SPS PPS

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc insert-sps-pps=1 ! qtmux ! filesink location=test.mp4e

启用两通cbr

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc EnableTwopassCBR=1 control-rate=2 ! qtmux ! filesink location=test.mp4e

设置虚拟缓冲区大小

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc vbv-size=10 ! qtmux ! filesink location=test.mp4e

以MB为单位的间距标题间距

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc slice-header-spacing=200 bit-packetization=0 ! qtmux ! filesink location=test.mp4 –e

切片标题间距,以位数表示

gst-launch-1.0 videotestsrc num-buffers=200 ! 'video/x-raw, width=(int)1280, height=(int)720, format=(string)I420' ! omxh264enc slice-header-spacing=1024 bit-packetization=1 ! qtmux ! filesink location=test1.mp4 –e

四、相机捕获
对于nvgstcapture-1.0使用信息,请输入以下命令:

nvgstcapture-1.0 --help

nvgstcapture-1.0应用程序使用v4l2src插件来捕获静态图像和视频。
下表显示了USB摄像头的支持。

raw-yuv Capture(I420格式)和预览显示与xvimagesink

gst-launch-1.0 v4l2src device="/dev/video0" ! "video/x-raw, width=640, height=480, format=(string)I420" ! xvimagesink -e

五、视频回放
对于nvgstplayer-1.0使用信息,请输入以下命令:

nvgstplayer-1.0 --help

视频可以使用平台上的HDMI连接器输出到高清显示器。 Gstreamer-1.0应用程序目前支持以下视频接收器:
Overlay Sink(全屏模式下的重叠式视频播放)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! nvoverlaysinke

nveglglessink(窗口视频播放,NVIDIA EGL / GLES视频)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! nveglglessinke

此nvgstplayer-1.0应用程序支持窗口播放的特定窗口位置和尺寸:

nvgstplayer-1.0 –i <filename> --window-x=300window-y=300window-width=500window-height=500

六、视频格式转换
NVIDIA专有的nvvidconv Gstreamer-1.0插件允许在OSS(原始)视频格式和NVIDIA视频格式之间进行转换。 nvvidconv插件目前支持本节中描述的格式转换。
raw-yuv输入格式:
目前,nvvidconv支持I420,UYVY和NV12 raw-yuv输入格式。

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720' ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=test.mp4 -e

raw-gray输入格式:
目前,nvvidconv支持GRAY8原始灰色输入格式。

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)GRAY8, width=(int)1280, height=(int)720’ ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxh264enc ! 'video/x-h264,
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=test.mp4 –e

raw-yuv输出格式:
目前,nvvidconv支持I420和UYVY的原始yuv输出格式。

gst-launch-1.0 filesrc location=640x480_30p.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw, format=(string)UYVY' ! xvimagesinke

raw-gray输出格式:
目前,nvvidconv支持GRAY8原始灰色输出格式。

gst-launch-1.0 filesrc location=640x480_30p.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw, format=(string)GRAY8' ! videoconvert ! xvimagesinke

七、视频缩放
NVIDIA专有的nvvidconv Gstreamer-1.0插件还允许您执行视频缩放。 nvvidconv插件目前支持使用本节中描述的格式转换进行缩放。
raw-yuv输入格式:
目前,nvvidconv支持缩放的I420,UYVY和NV12 raw-yuv输入格式。

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)I420, width=(int)1280, height=(int)720' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)640, height=(int)480, format=(string)I420' ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=test.mp4e

raw-gray输入格式:
目前,nvvidconv支持GRAY8原始灰色输入格式进行缩放。

gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)GRAY8, width=(int)1280, height=(int)720’! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)640, height=(int)480, format=(string)I420' ! omxh264enc ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink location=test.mp4 –e

raw-yuv输出格式:
目前,nvvidconv支持缩放的I420和UYVY raw-yuv输出格式。

gst-launch-1.0 filesrc location=1280x720_30p.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw, format=(string)I420, width=640, height=480' ! xvimagesinke

raw-gray输出格式:
目前,nvvidconv支持GRAY8原始灰色输出格式进行缩放。

gst-launch-1.0 filesrc location=1280x720_30p.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw, format=(string)GRAY8, width=640, height=480' ! videoconvert ! xvimagesinke

NVIDIA输入和输出格式:
目前,nvvidconv支持下表中描述的NVIDIA输入和输出格式:

在NVIDIA格式之间缩放:
使用以下命令在NVIDIA格式之间缩放:

gst-launch-1.0 filesrc location=1280x720_30p.mp4 ! qtdemux ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)640, height=(int)480, format=(string)I420' ! omxh264enc ! qtmux ! filesink location=test.mp4e
gst-launch-1.0 filesrc location=1280x720_30p.mp4 ! qtdemux ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)640, height=(int)480, format=(string)RGBA' ! nvoverlaysinke
gst-launch-1.0 nvcamerasrc fpsRange="30 30" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvtee ! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)640, height=(int)480, format=(string)NV12’ ! omxh264enc ! qtmux ! filesink location=test.mp4

八、视频播放
NVIDIA专有的nvvidconv Gstreamer-1.0插件还允许您执行视频裁剪。
裁剪视频:
使用以下命令裁剪视频:

gst-launch-1.0 filesrc location=<filename_1080p.mp4> ! qtdemux ! h264parse ! omxh264dec ! nvvidconv left=400 right=1520 top=200 bottom=880 ! nvoverlaysink display-id=1e

九、视频转码
您可以执行以下视频格式之间的视频转码。
H.264解码为VP8编码(NVIDIA加速解码为NVIDIA加速编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxvp8enc ! qtmux name=mux ! filesink location=<Transcoded_filename.mp4> demux.audio_0 ! queue ! aacparse ! mux.audio_0 -e

VP8解码到H.264编码(NVIDIA加速解码到NVIDIA加速编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxh264enc ! qtmux name=mux ! filesink location=<Transcoded_filename.mp4> demux.audio_0 ! queue ! aacparse ! mux.audio_0 -e

MPEG-4解码到VP8编码(NVIDIA加速解码到NVIDIA加速编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! mpeg4videoparse ! omxmpeg4videodec ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxvp8enc ! qtmux name=mux ! filesink location=<Transcoded_filename.mp4> demux.audio_0 ! queue ! aacparse ! mux.audio_0 -e

MPEG-4解码到H.264编码(NVIDIA加速解码到NVIDIA加速编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! mpeg4videoparse ! omxmpeg4videodec ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxh264enc ! qtmux name=mux ! filesink location=<Transcoded_filename.mp4> demux.audio_0 ! queue ! aacparse ! mux.audio_0 -e

H.264解码为MPEG-4编码(NVIDIA加速解码为OSS软件编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! omxh264dec ! nvvidconv ! avenc_mpeg4 ! qtmux name=mux ! filesink location=<Transcoded_filename.mp4> demux.audio_0 ! queue ! aacparse ! mux.audio_0 -e

VP8解码为MPEG-4编码(NVIDIA加速解码为OSS软件编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvvidconv ! avenc_mpeg4 ! qtmux name=mux ! filesink location=<Transcoded_filename.mp4> demux.audio_0 ! queue ! aacparse ! mux.audio_0 -e

H.264解码到Theora Encode(NVIDIA加速解码为OSS软件编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! omxh264dec ! nvvidconv ! theoraenc ! oggmux name=mux ! filesink location=<Transcoded_filename.ogg> -e

VP8解码为Theora Encode(NVIDIA加速解码为OSS软件编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvvidconv ! theoraenc ! oggmux name=mux ! filesink location=<Transcoded_filename.ogg> -e

MPEG-4解码到Theora Encode(NVIDIA加速解码到OSS软件编码)

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! mpeg4videoparse ! omxmpeg4videodec ! nvvidconv ! theoraenc ! oggmux name=mux ! filesink location=<Transcoded_filename.ogg> -e

十、CUDA视频后处理
本节介绍CUDA后处理操作的Gstreamer-1.0插件。

gst-videocuda

该GStreamer-1.0插件在解码器提供的EGL图像上执行CUDA后处理操作,并使用nveglglessink渲染视频。
以下是管道创建和应用程序使用示例。
示例解码管道:

gst-launch-1.0 filesrc location=<filename_h264_1080p.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! videocuda ! nveglglessink max-lateness=-1 -e

示例解码命令:

nvgstplayer-1.0 -i <filename_h264_1080p.mp4> --svd="omxh264dec" --svc="videocuda" --svs="nveglglessink # max-lateness=-1" --disable-vnative --no-audio --window-x=0 --window-y=0 --window-width=960 --window-height=540
gst-nvivafilter

该NVIDIA专有的GStreamer-1.0插件对CSI相机捕获或解码的帧执行前置/后置和CUDA后处理操作,并使用覆盖视频接收器或视频编码渲染视频。
示例解码管道:

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux ! h264parse ! omxh264dec ! nvivafilter cuda-process=true customer-lib-name="libnvsample_cudaprocess.so" ! 'video/x-raw(memory:NVMM), format=(string)NV12' ! nvoverlaysink -e

示例CSI摄像机管道:

gst-launch-1.0 nvcamerasrc fpsRange="30 30" ! 'video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)I420, framerate=(fraction)30/1' ! nvtee ! nvivafilter cuda-process=true customer-lib-name="libnvsample_cudaprocess.so" ! 'video/x-raw(memory:NVMM), format=(string)NV12' ! nvoverlaysink -e

注意:有关libnvsample_cudaprocess.so库源,请参阅nvsample_cudaprocess_src.tbz2软件包。 libnvsample_cudaprocess.so的示例CUDA实现可以由自定义CUDA实现替代。
十一、视频旋转
NVIDIA专有的nvvidconv Gstreamer-1.0插件还允许您执行视频旋转操作。
下表显示了nvvidconv flip-method属性支持的值。

注意:使用gst-inspect-1.0 nvvidconv命令获取有关nvvidconv flip-method属性的信息。
将视频逆时针旋转90度:
要将视频逆时针旋转90度,请输入以下命令:

gst-launch-1.0 filesrc location=<filename.mp4>! qtdemux name=demux ! h264parse ! omxh264dec ! nvvidconv flip-method=1 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvoverlaysinke

将视频顺时针旋转90度:
要将视频沿顺时针方向旋转90度,请输入以下命令:

gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! nvvidconv flip-method=3 ! 'video/x-raw(memory:NVMM), format=(string)I420’ ! omxh264enc ! qtmux ! filesink location=test.mp4e

旋转180度:
要旋转视频180度,请输入以下命令:

gst-launch-1.0 nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvtee ! nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvoverlaysink -e

将视频缩放和逆时针旋转90度:
要将视频缩放和逆时针旋转90度,请输入以下命令:

gst-launch-1.0 filesrc location=<filename_1080p.mp4> ! qtdemux ! h264parse ! omxh264dec ! nvvidconv flip-method=1 ! 'video/x-raw(memory:NVMM), width=(int)480, height=(int)640, format=(string)I420' ! nvoverlaysink -e

将视频缩放和逆时针旋转90度:
要将视频缩放和顺时针旋转90度,请输入以下命令:

gst-launch-1.0 nvcamerasrc fpsRange="30.0 30.0" ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvtee ! nvvidconv flip-method=3 ! 'video/x-raw(memory:NVMM), width=(int)480, height=(int)640, format=(string)I420' ! nvoverlaysink -e

将视频缩放和旋转180度:
要缩放和旋转视频180度,请输入以下命令:

gst-launch-1.0 filesrc location=<filename_1080p.mp4> ! qtdemux ! h264parse ! omxh264dec ! nvvidconv flip-method=2 ! 'video/x-raw(memory:NVMM), width=(int)640, height=(int)480, format=(string)I420' ! nvoverlaysink -e

十二、用于视频缩放的插值方法
NVIDIA专有的nvvidconv Gstreamer-1.0插件允许您选择用于缩放的插值方法。
下表显示了nvvidconv interpolation-method属性支持的值。

注意:使用gst-inspect-1.0 nvvidconv命令获取有关nvvidconv interpolation-method属性的信息。
使用双线性插值法进行缩放
输入以下命令:

gst-launch-1.0 filesrc location=<filename_1080p.mp4>! qtdemux name=demux ! h264parse ! omxh264dec ! nvvidconv interpolation-method=3 ! 'video/x-raw(memory:NVMM), format=(string)I420, width=1280, height=720' ! nvoverlaysinke

十三、EGLSTREAM生产商示例
NVIDIA专有的nveglstreamsrc和nvvideosink Gstreamer-1.0插件允许模拟EGLStream生产者管道(仅供预览)。
模拟EGLStream生产者管道
输入以下命令:

nvgstcapture-1.0 --camsrc=3 --nvvideosink-create-eglstream

十四、EGL图像变换示例
NVIDIA专有的nvegltransform Gstreamer-1.0插件可以模拟EGLImage变换管道。
模拟EGL图像变换管道
输入以下命令:

rmc
gst-launch-1.0 filesrc location=<filename_h264_1080p.mp4> ! qtdemux ! h264parse ! omxh264dec ! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)NV12' ! nvegltransform ! nveglglessink -e

系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~

完的汪(∪。∪)。。。zzz

这篇关于NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044762

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例