【GStreamer 】5-5-总结USB相机转RTSP网络视频流-推流usb摄像头JPEG

        我们使用gstreamer-rtsp-server ,实现了USB相机转RTSP网络流的基本功能,之前很多篇都讲了如何实现,这一次我们集中精力解决之前的一些问题。

        文章【GStreamer 】5-4-USB相机转RTSP网络视频流优化转发_机器人虎哥的博客-CSDN博客

我们解决了使用USB相机源,示例代码不能支持多路客户端的问题。这篇,我们主要来解决之前图像质量不好,以及,采用USB相机的JPEG格式视频数据来做RTSP服务器的数据源。

目录

1、推流usb摄像头JPEG格式视频

2、推流usb摄像头JPEG格式视频,硬件加速优化

3、推流usb摄像头JPEG格式视频,提高硬件压缩的清晰度

4、推流usb摄像头YUV格式视频,提高硬件压缩的清晰度


1、推流usb摄像头JPEG格式视频

./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=640,height=480,framerate=30/1 ! jpegdec ! timeoverlay ! tee name=vsrc vsrc. ! queue ! videoconvert ! ximagesink vsrc. ! queue ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )"

同时还使用用了tee分支插件,会同步有一路视频显示,一路被推流

 

        同步显示的会很快,推流后的会有延时。通过叠加一个计时器timeoverlay可以比较拉流显示的延迟时间我们去除同步显示,后可以测试看看:

./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=640,height=480,framerate=30/1 ! jpegdec ! timeoverlay ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )"

  

我们再试试大尺寸的图像:

./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! timeoverlay ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )"

 

        测试还发现一个现象,我们目前每次建立新的客户端,在新的客户端完全建立连接前,旧的客户端的视频是卡主不动的,所有客户端最终的视频是同步一致的,这个应该也是一个问题

2、推流usb摄像头JPEG格式视频,硬件加速优化

./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! timeoverlay ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )"

使用硬件解码:nvjpegdec

./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! nvjpegdec ! timeoverlay ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )"

 

CPU的资源占用还是节省了不少,进一步使用硬件压缩

#调试命令
gst-launch-1.0 v4l2src device=/dev/video0 \
! image/jpeg,width=1280,height=720,framerate=30/1 \
! nvjpegdec ! timeoverlay  \
! queue !  omxh264enc bitrate=2048 !  rtph264pay name=pay0 pt=96   \
! fakesink sync=false
#使用硬件加速压缩
./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! nvjpegdec ! timeoverlay !  queue ! omxh264enc bitrate=2048 ! rtph264pay name=pay0 pt=96 )"

感觉图像质量变差外,没有发现其它效果。优化效果并不明显。

3、推流usb摄像头JPEG格式视频,提高硬件压缩的清晰度

#使用硬件加速压缩
./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! nvjpegdec ! timeoverlay !  queue ! omxh264enc  ! rtph264pay name=pay0 pt=96 )"

只要不约束参数bitrate=2048,让其自适应,就可以实现和原始画质一样的效果。

bitrate=2048 原来都是这个参数导致的!不要乱用参数啊。

4、推流usb摄像头YUV格式视频,提高硬件压缩的清晰度

#图像质量有瑕疵
./test-launch --gst-debug-level=3 "( v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=640, height=480, framerate=25/1 ! nvvidconv ! video/x-raw(memory:NVMM), format=(string)I420, width=640, height=480, framerate=25/1  ! queue ! omxh264enc bitrate=2048 ! rtph264pay name=pay0 pt=96 )"
 
#可以支持多客户端,并且图像和原始质量基本一致
./test-launch2 --gst-debug-level=3 "( v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=640, height=480, framerate=25/1 ! timeoverlay  ! nvvidconv ! video/x-raw(memory:NVMM), format=(string)I420, width=640, height=480, framerate=25/1 ! queue !  omxh264enc ! rtph264pay name=pay0 pt=96 )"

 

 

640X480的视频资源占用率其实真心都不高。

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值