1. 背景
在SRS使用中实现视频录制功能。
2. 思路
方案1:实时方式
-
拍照:操作者点击拍照按钮,触发网络请求,后端收到请求后启动一个ffmpeg 命令行进行截图。
-
录像:操作者点击开始录像按钮,触发网络请求,后端收到请求后启动一个ffmpeg 命令行录像,待操作者点击结束录像按钮后录像完成。
-
方案优点:容易实现
-
方案缺点:操作和响应的延时,即点击按钮后,约有2-5秒延迟(网络响应时间+ffmpeg启动时间+ffmpeg打开流时间+ffmpeg拍照响应时间。 争议:看到的视频的当前播放内容(时间) != 点击按钮时间 != ffmpeg拍照时间
方案2:DVR录制后拍照和截取
-
前提:开启DVR功能,对每一个来自客户端发布的流都录制,并以时间分段成多个物理文件,然后就可以操作文件截图和截取视频了。
-
拍照:点击按钮获得点击时间,从已经完成的DVR文件中识别文件名(包含了时间),读取文件后按指定时间差值截图。
-
录像:获得 开始录制时间和结束录制时间。从已完成的DVR文件中识别文件名(包含了时间),读取文件截取时间段内的截图。
-
方案优点:相比较于 方案1,时间误差的延迟小。
-
方案缺点:依赖于DVR录制后的文件。需要考虑DVR临时录制文件的清理处置。
3. 实现
DVR 视频录制: SRS支持将RTMP流录制成FLV或MP4文件。下面的描述以FLV为例。
【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击