ubuntu中USB摄像头gstreamer方式图像采集、显示、录像及回放功能设计——(1)

文章目录
背景
一、USB摄像头图像格式
1.安装v4l2-ctl库
2.找到挂载节点
3.图像格式分析
二、Gstreamer 简介
三、Gstreamer 命令行
1.显示MJPG格式,1280*720@30fps视频
2.显示YUV格式,1280*720@15fps视频,容易卡顿
3. 显示MJPG格式,1280*720@30fps视频并同时抓拍(通过回调函数的方式)
4.显示MJPG格式,1280*720@30fps视频并同时抓拍(通过回调函数的方式),此外并进行录像功能
5.回放录像的视频(该命令不能直接执行,而是代码中实现的基本原理)
总结
背景
最近由于项目需求,需要在X86平台及ARM平台中进行USB摄像头视频的采集、显示、录像及回放功能,尝试了许多方式来进行,比如openCV库,mplayer库的方式,虽然它们都能够进行USB摄像头的采集显示,但是实现需求方面总是存在各种问题:(1)性能不行,图像采集的分辨率很低或帧率很低,图像丢帧问题比较严重;(2)不能实现流畅的一边录像一边显示,在1920*1080分辨率延迟最大在200左右,在(也有可能是自己的技术问题,有大神可以分享下实现方法)。最终我还是选择了在linux中使用起来比便的gstreamer库进行学习研究,发现其能很好的满足我们的需求,接下来我来分享下其中主要内容。
一、USB摄像头图像格式
目前USB接口的摄像头还是比较常见的,我用的是一款HK的1080P高清摄像头,USB摄像头采用UVC协议来进行数据传输的,具体的这个我也研究不深。我们主要需要注意的是USB摄像头的传输图像数据格式,一般是MJPG与YUV数据格式,MJPG压缩格式数据一般更容易满足USB传输需求,而YUV数据原始流数据传输,数量量太大很难在USB上实时传输。接下来介绍USB摄像头图像格式分析工具及方法。
1.安装v4l2-ctl库

 2.找到挂载节点

 

 3.图像格式分析

使用如下命令,可以看到USB摄像机的支持的所有视频格式信息,可以看到其支持MJPG与YUV两种格式,每种格式有对应支持的分辨率、帧率信息。

 

 二、Gstreamer 简介
gstreamer是一种多媒体库,GStreamer采用基于插件(plugin)和管道(pipeline)的体系结构,其内部提供了许多组件,可以按照我们需要的功能在我们设计的管道中添加我们需要的组件,然后进行连接起来,最后就可以控制这个管道的工作,具体原理可以自己查找下相关资料。
gstreamer使用手册:
https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-language=c
gstreamer的安装方法可以参考: https://blog.csdn.net/qq_32196869/article/details/124278298?spm=1001.2014.3001.5501

三、Gstreamer 命令行

1.显示MJPG格式,1280*720@30fps视频

2.显示YUV格式,1280*720@15fps视频,容易卡顿

备注:这个性能主要看USB接口是2.0还是3.0、YUV传输图像fps以及主机的性能。

 3. 显示MJPG格式,1280*720@30fps视频并同时抓拍(通过回调函数的方式)

 4.显示MJPG格式,1280*720@30fps视频并同时抓拍(通过回调函数的方式),此外并进行录像功能

5.回放录像的视频(该命令不能直接执行,而是代码中实现的基本原理)

总结

以上介绍了Gstreamer使用的背景及需求,以及通过Gstreamer实现显示、录像、截图、回放功能的实现中的命令行,gstreamer代码就是基于命令行的功能复现,在接下来会再进行介绍。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值