视频监控项目实战----(韦东山老师)FFmpeg方案

在上篇文章:https://blog.csdn.net/JUST__Tw/article/details/111994673之后,下面进行主流的流媒体方案搭建,FFmpeg

我贴上一张课程PPT里的图片,可以感觉一下FFmpeg是什么

个人觉得可以这样理解FFmpeg,它就像计算机开源视觉库OpenCV一样,是一套软件核心,在有相应的硬件数据支撑的情况下,可以对数据进行各种方式的利用和开发。如果想要深入了解这里的知识,建议还是要从摄像头采集原理开始了解,比较视频处理领域也是含有较大的知识量,看看现在的多媒体播放和直播就知道了。

1.编译FFmpeg

工具链参考上面链接已经全部配置好了。

由于FFmpeg要在开发板上运行,因此不能通过网络之间安装,必须要把FFmpeg在buildroot中选中,然后编译进去,再重新烧写镜像。

这里我碰见了一个问题,在make menuconfig之后,执行make总是要报错,无法在output中产生镜像文件,然后我加了sudo之后就成功了,包括昨天在编译mjpg-streamer中也是这样。

虽然问题解决了,但仍然未找到原因,如有知道的,可以留言交流。

在选择FFmpeg的时候要把里面的功能全部选中,同理,编译完成后将镜像烧写到开发板中,然后执行命令

ffmpeg -version

如果出现下图则代表成功

使用ffmpeg --help可以查看它的使用命令

 

2.运行FFmpeg

执行命令

ls /dev/video*

可以查看摄像头设备,插入的是哪一个

执行命令

ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10  my.mp4

命令中 -f  代表force format

v4l2是表示在Linux中,表示Video for linux2,是Linux下关于视频采集相关设备的驱动框架,感兴趣的可以深入了解一下

-framerate 10表示一秒10帧

-i 指定输入设备

-q 质量是10,保存为mp4文件

这条命令会将摄像头数据录制为mp4格式文件

问题:摄像头开始采集数据之后,并没有实际采集到所有的图片数据,因为CPU的处理能力有限,所以不能把所有的图像数据都捕捉下来。可以通过晃动摄像头,观察视频的采集时间差异得到

 

3. 移植Nginx

使用Buildroot,配置选择Nginx,直接编译生成映象文件

Nginux需要第3方模块

         nginx-rtmp-module:实现了RTMP协议

         nginx-http-flv-module:在nginx-rtmp-module的基础上,实现了HTTPFLV,并覆盖nginx-rtmp-module的所有功能

         所以,我们将会在Nginx上使用nginx-http-flv-module

(1)设置交叉编译工具链,这和之前的步骤一样,我直接永久设置了,临时设置可以输入如下语句

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

(2)下载第三方模块:

在Buildroot目录下,创建目录:

mkdir  dl/nginx

使用git下列载:

cd  dl/nginx  &&  git clone https://github.com/winshining/nginx-http-flv-module.git

(3)在buildroot根目录配置Nginx,使用make menuconfig

把原来的lighttpd去掉,否则板子也会自动启动它,就会有两个HTTP服务了:lighttpd, nginx

然后选择Nginx,建议把所有功能都选上

并且设置额外的参数,在“additional modules”中添加:

$(TOPDIR)/dl/nginx/nginx-http-flv-module

如下图

最后执行sudo make 编译,和以前一样产生镜像emmc.img,将其烧录到开发板中

 

4.运行Nginx

启动开发板后,输入

nginx -v

可以查看镜像里面是否已经编译上了Nginx

然后就修改/etc/nginx/nginx.conf :有两个地方

vim /etc/nginx/nginx.conf

按i键,进入vim的编辑模式,添加内容如下:

然后按ESC进入vim命令模式,再按shift+冒号,输入wq,即可保存退出

最后重启Nginx服务

/etc/init.d/S50nginx restart

然后即可通过浏览器直接访问开发板IP地址,出现下图则说明Nginx启动成功



4.测试流媒体

(1)推流,在开发板上执行

ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10  -f flv rtmp://127.0.0.1/live/wei

(2)拉流,在PC上使用potplayer播放器进行拉流播放

potplayer安装程序:链接:https://pan.baidu.com/s/1t_LdypnIoGgDdKUgOGpFeQ 提取码:fev1 
安装完之后,如下操作:

在下面空白栏中输入地址,要注意IP地址为自己开发板的地址

使用RTMP协议拉流:播放器中点击“打开”->“打开链接”,输入:rtmp://192.168.1.6/live/wei  ,就可以播放了

使用HTTPFLV协议拉流:播放器中点击“打开”->“打开链接”,输入: http://192.168.1.6/test?app=live&stream=wei ,就可以播放了

点击确定即可播放

但是同样由于处理器性能太差,播放器中的视频永远存在滞后,大概会有7-15s秒的延迟

 

但此时在浏览器中输入:http://192.168.1.6/test?app=live&stream=wei 并不会直接打开播放,而是会下载这个播放文件,这是因为该网页缺少flv的插件,因为B站现在使用的就是HTML5的播放方式,而其中使用的就是flv.js插件

安装参考链接如下:https://blog.csdn.net/impingo/article/details/103077380

主要是其中的:Demo地址:http://player.pingos.io/flv

但是输入链接后还是要报错,然后再参考下面这篇链接:https://segmentfault.com/a/1190000023949105

再次对Nginx中的配置文件进行修改:

然后重启服务

再次推流,注意这里推流是推已经存在的视频流,而不是摄像头的实时视频流,因为开发板性能有限,实时的视频流无法推送上来

再在上面的Demo地址输入,就可以查看视频了

 

5.自己制作HTML来直接查看视频

https://blog.csdn.net/string_kai/article/details/100598268

从上述链接中直接下载demo文件,

然后修改其中的URL和flv.js下载两个地方

第一个直接在上述链接中复制过来,第二个地方修改为自己的IP地址

然后再浏览器中输入上述链接的URL就可以直接播放了

如果想要进一步的直接在浏览器输入IP地址进行访问,则要在将HTML文件上传到开发板中

并进入/usr/html目录下,可以看到有两个文件

直接修改里面的index.html,其内容就是上面刚刚新建的一个修改后的HTML文件的内容,修改完后保存,在开发板上进行推流

此时,可以直接在浏览器中输入开发板IP地址进行播放了

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴听到您对Qt5+FFmpeg多路H265视频监控项目的实战感兴趣!这是一个非常有挑战性的项目,需要涉及到视频处理、网络通信和用户界面设计等多个方面。以下是一些关键的步骤和技术要点,供您参考: 1. 安装Qt5和FFmpeg:确保您的开发环境中安装了Qt5和FFmpeg库。您可以从官方网站下载和安装它们,或者使用包管理器进行安装。 2. 视频解码和播放:使用FFmpeg库来解码H265编码的视频流,并使用Qt中的QMediaPlayer或QVideoWidget来实现视频播放功能。您可以使用FFmpeg的API来读取和解码视频帧,并将其传递给Qt的视频播放组件进行显示。 3. 多路视频处理:对于多路视频监控,您需要同时处理多个视频流。您可以使用多线程或异步编程来实现并行处理。每个视频流都需要一个独立的解码器和播放器实例来处理。 4. 网络通信:如果您需要从远程设备接收视频流,您可以使用Qt提供的网络模块来实现网络通信。您可以使用Qt的QTcpSocket或QUdpSocket类来接收和处理视频数据。 5. 用户界面设计:使用Qt的UI设计工具(如Qt Designer)创建一个用户友好的界面。您可以添加控件来显示视频流、控制播放、切换摄像头等功能。确保界面与视频处理逻辑进行交互。 请注意,这只是一个简要概述,Qt5+FFmpeg多路H265视频监控项目是一个复杂的项目,需要您具备一定的视频处理和编程经验。建议您先熟悉Qt和FFmpeg的基本用法,并进行相关学习和实践,以便更好地完成这个项目。祝您成功!如果您有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值