FFMPEG录制远程监控摄像头MP4

发布于:2025-03-16 ⋅ 阅读:(21) ⋅ 点赞:(0)

手绘效果图

        上图是录制功能的HTML前端页面,录制功能和解码视频放在一起。录制功能关键是录制(开始录制按钮)、停止录像按钮。当点击“录制”的时候则会开始录制MP4文件, 当点击停止的时候就会停止录制MP4。经过录制后,则会生成MP4,并放到我的RV1126的/tmp目录下。因为我的板子内存不够,只能放到这里。 

HTML和CGI和RV1126后台程序交互框图

        图是HTML、CGI、RV1126后台程序的交互框图。HTML的界面主要是设置两个按钮,分别是录制、停止录制。在HTML页面点击开始录制按钮的时候就会跳转到start_record_cgi.cgi, 它的主要作用是封装消息队列的数据, 具体的实现是message.mtype=1,message.data=2(开始录制MP4标识)并发送到RV1126后台程序,若后台程序msgrcv接收到data == 2的指令则调用FFMPEG开始录制。

        点击“停止录制”则跳转到stop_record_cgi.cgi,它的主要作用是封装停止录制的消息队列数据,具体的实现是message.mtype=1,message.data=3(停止录制MP4标识)并发送到RV1126后台程序, 若后台程序msgrcv接收到data == 3的指令则停止MP4录制。

FFMPEG远程录制功能的代码实现

        上图是HTML的实现, 画红框部分就是开始录制按钮和停止录制按钮的设计,开始按钮的实现是<button type="button" class="button green" οnclick="window.location.href='/cgi-bin/start_record_cgi.cgi'">Start_Record</button>,这里的关键是οnclick="window.location.href='/cgi-bin/start_record_cgi.cgi指的是跳转到start_record_cgi.cgi的CGI程序。停止录制的按钮是<button type="button" class="button blue" οnclick="window.location.href='/cgi-bin/stop_record_cgi.cgi'">Stop_Record</button>,这里的关键是οnclick="window.location.href='/cgi-bin/stop_record_cgi.cgi指的是跳转到stop_record_cgi.cgi的CGI程序。

start_record_cgi.cgi的CGI程序 

stop_record_cgi.cgi程序

RV1126后台程序代码实现

        消息队列接收开始录制和停止录制指令,在rv1126后台程序里面通过一个线程,一直在这里面获取消息队列里面的数据