我是靠谱客的博主 孝顺服饰,最近开发中收集的这篇文章主要介绍Linux之gstreamer视频编解码测试指令0 背景1 jetson 平台2 dGPU 平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

0 背景

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

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

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

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

参考:https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/accelerated_gstreamer.html

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 平台

2.1 deepstream测试

gst-launch-1.0 filesrc location= /opt/nvidia/deepstream/deepstream-5.0/samples/streams/sample_1080p_h264.mp4 ! qtdemux !
    h264parse ! nvv4l2decoder ! m.sink_0 nvstreammux name=m batch-size=1 width=1920 height=1080 batched-push-timeout=4000000 !
    nvinfer config-file-path= /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app/config_infer_primary.txt
    batch-size=1 unique-id=1 ! nvvideoconvert ! nvdsosd ! nvvideoconvert ! nvv4l2h264enc ! h264parse ! fpsdisplaysink test-overlay=false
    video-sink="fakesink" -v

2.2 硬件编码

gst-launch-1.0 videotestsrc ! video/x-raw,width=1920,height=1080,format=BGR ! videoconvert ! video/x-raw,format=I420 ! nvvideoconvert ! 'video/x-raw(memory:NVMM)' ! nvv4l2h264enc ! h264parse ! matroskamux ! fakesink

2.3 硬件编码输出rtsp

gst-launch-1.0 videotestsrc ! videoconvert ! video/x-raw,format=I420,width=640,height=480 ! nvvideoconvert ! 'video/x-raw(memory:NVMM)' ! nvv4l2h264enc ! video/x-h264, stream-format=byte-stream ! rtspclientsink location=rtsp://127.0.0.1/live/test

2.4 软件编码输出rtsp

gst-launch-1.0 videotestsrc ! videoconvert ! video/x-raw,format=I420,width=640,height=480 ! x264enc  ! video/x-h264, stream-format=byte-stream ! rtspclientsink location=rtsp://127.0.0.1/live/test

(持续更新中)

最后

以上就是孝顺服饰为你收集整理的Linux之gstreamer视频编解码测试指令0 背景1 jetson 平台2 dGPU 平台的全部内容,希望文章能够帮你解决Linux之gstreamer视频编解码测试指令0 背景1 jetson 平台2 dGPU 平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部