【ARM-Linux开发】【CUDA开发】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
- 1
2.检查Gstreamer-1.0版本:
gst-inspect-1.0 –-version
- 1
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
- 1
使用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
- 1
AMR-WB解码(OSS软件解码)
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.audio_0 ! queue ! avdec_amrwb ! audioconvert ! alsasink -e
- 1
AMR-NB解码(OSS软件解码)
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.audio_0 ! queue ! avdec_amrnb ! audioconvert ! alsasink -e
- 1
MP3解码(OSS软件解码)
gst-launch-1.0 filesrc location=<filename.mp3> ! mpegaudioparse ! avdec_mp3 ! audioconvert ! alsasink -e
- 1
注意:要通过HDMI路由音频,请将alsasink属性设备设置为以下内容:
hw:Tegra,3
- 1
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
- 1
H.265解码(NVIDIA加速解码)
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! h265parse ! omxh265dec ! nvoverlaysink -e
- 1
注意:解码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
- 1
注意:当您不使用主显示器来渲染视频时,请使用nvoverlaysink的display-id属性。 例如,请参考下面的管道。
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvoverlaysink display-id=1 -e
- 1
MPEG-4解码(NVIDIA加速解码)
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux demux.video_0 ! queue ! mpeg4videoparse ! omxmpeg4videodec ! nveglglessink -e
- 1
图像解码
gst-launch-1.0 filesrc location=<filename.jpg> ! nvjpegdec ! imagefreeze ! xvimagesink -e
- 1
三、编码示例
本节中的示例显示了如何使用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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
图像编码:
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
- 1
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
- 1
设置时间权衡(编码器应丢弃帧的速率)
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
- 1
设定速率控制模式:
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
- 1
设置I,P和B帧的量化范围
范围的格式如下:
”<I_range>:<P_range>:<B_range>”
- 1
其中,和各自表示为连字符值,如以下示例所示:
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
- 1
设置质量水平
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
- 1
设置配置文件
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
- 1
设置两个参考帧之间设置的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.mp4 –e
- 1
在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.mp4 –e
- 1
启用两通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.mp4 –e
- 1
设置虚拟缓冲区大小
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.mp4 –e
- 1
以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
- 1
切片标题间距,以位数表示
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
- 1
四、相机捕获
对于nvgstcapture-1.0使用信息,请输入以下命令:
nvgstcapture-1.0 --help
- 1
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
- 1
五、视频回放
对于nvgstplayer-1.0使用信息,请输入以下命令:
nvgstplayer-1.0 --help
- 1
视频可以使用平台上的HDMI连接器输出到高清显示器。 Gstreamer-1.0应用程序目前支持以下视频接收器:
Overlay Sink(全屏模式下的重叠式视频播放)
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! nvoverlaysink –e
- 1
nveglglessink(窗口视频播放,NVIDIA EGL / GLES视频)
gst-launch-1.0 filesrc location=<filename.mp4> ! qtdemux name=demux ! h264parse ! omxh264dec ! nveglglessink –e
- 1
此nvgstplayer-1.0应用程序支持窗口播放的特定窗口位置和尺寸:
nvgstplayer-1.0 –i <filename> --window-x=300 –window-y=300 –window-width=500 –window-height=500
- 1
六、视频格式转换
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
- 1
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
- 1
- 2
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' ! xvimagesink –e
- 1
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 ! xvimagesink –e
- 1
七、视频缩放
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.mp4 –e
- 1
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
- 1
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' ! xvimagesink –e
- 1
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 ! xvimagesink –e
- 1
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.mp4 –e
- 1
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' ! nvoverlaysink –e
- 1
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
- 1
八、视频播放
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=1 –e
- 1
九、视频转码
您可以执行以下视频格式之间的视频转码。
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
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
- 1
十、CUDA视频后处理
本节介绍CUDA后处理操作的Gstreamer-1.0插件。
gst-videocuda
- 1
该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
- 1
示例解码命令:
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
- 1
- 2
该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
- 1
示例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
- 1
注意:有关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' ! nvoverlaysink –e
- 1
将视频顺时针旋转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.mp4 –e
- 1
旋转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
- 1
将视频缩放和逆时针旋转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
- 1
将视频缩放和逆时针旋转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
- 1
将视频缩放和旋转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
- 1
十二、用于视频缩放的插值方法
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' ! nvoverlaysink –e
- 1
十三、EGLSTREAM生产商示例
NVIDIA专有的nveglstreamsrc和nvvideosink Gstreamer-1.0插件允许模拟EGLStream生产者管道(仅供预览)。
模拟EGLStream生产者管道
输入以下命令:
nvgstcapture-1.0 --camsrc=3 --nvvideosink-create-eglstream
- 1
十四、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
【ARM-Linux开发】【CUDA开发】NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南的更多相关文章
- 【并行计算-CUDA开发】 NVIDIA Jetson TX1
概述 NVIDIA Jetson TX1是计算机视觉系统的SoM(system-on-module)解决方案.它组合了最新的NVIDIAMaxwell GPU架构,其具有ARM Cortex-A57 ...
- 【视频开发】【CUDA开发】FFMPEG硬件加速-nvidia方案
1.目标 <1>显卡性能参数: <2>方案可行性: 2.平台信息 2.1.查看当前显卡信息 命令: lspci |grep VGA 信息: 01:00.0 VGA com ...
- Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核
Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核 标签(空格分隔): Qemu ARM Linux 在上文<Qemu搭建ARM vexpress开发环 ...
- 【DSP开发】【Linux开发】基于ARM+DSP进行应用开发
针对当前应用的复杂性,SOC芯片更好能能满足应用和媒体的需求,集成众多接口,用ARM做为应用处理器进行多样化的应用开发和用户界面和接口,利用DSP进行算法加速,特别是媒体的编解码算法加速,既能够保持算 ...
- 【视频开发】【CUDA开发】ffmpeg Nvidia硬件加速总结
原文链接:https://developer.nvidia.com/ffmpeg GPU-accelerated video processing integrated into the most p ...
- 【ARM-Linux开发】【CUDA开发】【深度学习与神经网络】Jetson Tx2安装相关之三
JetPack(Jetson SDK)是一个按需的一体化软件包,捆绑了NVIDIA®Jetson嵌入式平台的开发人员软件.JetPack 3.0包括对Jetson TX2 , Jetson TX1和J ...
- 【神经网络与深度学习】【CUDA开发】【VS开发】Caffe+VS2013+CUDA7.5+cuDNN配置过程说明
[神经网络与深度学习][CUDA开发][VS开发]Caffe+VS2013+CUDA7.5+cuDNN配置过程说明 标签:[Qt开发] 说明:这个工具在Windows上的配置真的是让我纠结万分,大部分 ...
- 热烈庆祝华清远见2014嵌入式系统(Linux&Android)开发就业培训课程全面升级
近日,华清远见公开宣布:2014嵌入式系统 (Linux&Android)开发就业培训课程再次升级!据悉,华清远见如今已经持续10年,一直保持课程每年2次的更新的频率.华清远见的每 次课程更新 ...
- Linux设备驱动开发环境的搭建(转)
经过两周的摸索,终于对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助. 刚接触Linux设备驱动时,初学者往 ...
随机推荐
- 导入Excel——解析Excel
读取Excel 思路:先读取整个Excel,即工作簿,再依次读取其中的每个工作表Sheet,最后读取工作表内的表格. 一.读取工作簿利用流读取指定目录中的工作簿,并写入内存. /** * Constr ...
- Spark RDD :Spark API--图解Spark API
面试题引出: 简述Spark的宽窄依赖,以及Spark如何划分stage,每个stage又根据什么决定task个数? Stage:根据RDD之间的依赖关系的不同将Job划分成不同的Stage,遇到一个 ...
- 第一个python&selenium自动化测试实战项目
说明:本项目采用流程控制思想,未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码,验证是 ...
- 珠峰培训node正式课--【笔记】|全局对象 | process | util | fs | stream 流
全局对象: console : __filename ; __dirname ; setTimeOut ; setImmediate(把参数函数放在下一个环节执行) proc ...
- ID 迭代加深搜索 模板 埃及分数
#include <bits/stdc++.h> using namespace std; #define LL long long int Maxd; LL Ans[10], now[1 ...
- Passwords Gym - 101174E (AC自动机上DP)
Problem E: Passwords \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出两个正整数\(A,B\),再给出\(n\)个字符 ...
- mercurial branch name use integer as a name
问题:mercurial branch name use integer as a name 解决: 到安装目录下找到mercurial/scmutil.py文件(我的:/usr/local/Cell ...
- Redis缓存穿透、缓存雪崩、redis并发问题 并发竞争key的解决方案 (阿里)
阿里的人问我 缓存雪崩(大量数据在同一时间过期了)了如何处理,缓存击穿了如何处理,回答的很烂,做了总结: 把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数 ...
- Json文件的BOM
1.什么是BOM BOM: Byte Order Mark UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支持UTF-16,UTF-32才加上的BOM,B ...
- [技术博客] win10下vagrant+centos7 rails虚拟开发机配置流程
由于少昂早年已经在此踩过坑了,因此在这里,我们现在直接贴上他早年的博客链接:https://www.cnblogs.com/HansBug/p/7403306.html