Linux之gstreamer视频编解码测试指令

0 背景

gstreamer 是一个流媒体处理框架,可以使用插件的方法创建 pipeline,快速验证某些功能。NVIDIA 推出的 deepstream 便是基于 gstreamer 开发的 sdk,也推出了自己的插件,如硬件编解码模块 NVCODEC。

在开发过程中,我们习惯用 gst-launch-1.0 工具来搭建 pipeline,因此本文整理一下常见的 pipeline 方法,并不断完善补充。

关于 gstreamer 的基本使用,可以参考《gstreamer基础教程》和《gstreamer开发手册》系列教程。

由于 NVIDIA 的 jetson 平台与 dGPU 平台的编解码模块有所区别,因此本文按照平台进行分类汇总。

1 jetson 平台

1.1 工具

由于要在jetson上使用usb摄像头,需要安装 v4l-utils

 sudo apt-get install v4l-utils

要查询v4l设备(将它们连接到您的Jetson的USB端口后),请使用以下命令

 v4l2-ctl --list-devices

查询设备支持的格式(在这种情况下为video0)

 v4l2-ctl -d /dev/video0 --list-formats-ext

或者,您可以简单地查询所有已连接的v4l设备 

v4l2-ctl --list-formats-ext

1.2 读取视频并保存视频

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.3 读取USB摄像头并保存视频

gst-launch-1.0 v4l2src device="/dev/video0" ! "video/x-raw, width=1920, height=1080" \
  ! decodebin ! videoconvert ! omxh264enc ! video/x-h264, \
  stream-format=byte-stream ! h264parse ! qtmux ! filesink \
  location=test.mp4 -e

1.4 读取文件并显示

gst-launch-1.0 filesrc location=test.mp4 ! qtdemux name=demux ! h264parse ! \
  omxh264dec ! fakesink -e

1.5 流式传输

编码发送

gst-launch-1.0 v4l2src ! decodebin ! videoconvert ! omxh264enc ! video/x-h264, \
  stream-format=byte-stream ! rtph264pay pt=96 ! udpsink host=127.0.0.1 port=8001 sync=false -e

接收解码

gst-launch-1.0 udpsrc address=127.0.0.1 port=8001 ! application/x-rtp, encoding-name=H264, \
  payload=96 ! rtph264depay ! queue ! h264parse ! omxh264dec ! fakesink

2 dGPU 平台

 

 

(未完待续)

 

你可能感兴趣的:(视频开发)