NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南
一、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'