将连续RTSP流保存为5-10分钟长的mp4文件

时间:2012-05-05 06:06:35

标签: ffmpeg streaming mp4 rtsp vlc

如何将流(协议rtsp,编解码器h264)保存在文件(容器mp4)中?也就是说,在输入无尽的流(用CCTV摄像机)时,输出文件的mp4格式大小为5-10分钟的录制时间。

操作系统:debian,ubuntu 软件:vlc,ffmpeg(avconv)

目前使用此方案:

cvlc rtsp://admin:admin@10.1.1.1:554/ch1-s1 --sout=file/ts:stream.ts
ffmpeg -i stream.ts -vcodec copy -f mp4 stream.mp4

但是它不能连续录制视频(重启后vlc会丢失大约10秒的直播视频)。

3 个答案:

答案 0 :(得分:22)

请参阅this question并回答“服务器故障”。简而言之,切换工具。 avconv将做你想要的。 (ffmpeg已成为avconv。)

您正在寻找的功能称为分段。您的命令行看起来像这样:

avconv -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-%03d.mp4"

答案 1 :(得分:8)

Alexander Garden解决方案适用于ffmpep使用以下版本。将avconv替换为ffmpeg

  

./ ffmpeg -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4“capture-%03d.mp4”

由于FFmpeg对版本,ubuntu分裂和快速开发的混淆,我包含了这个标题。

  

ffmpeg版本N-80023-gd55568d版权所有(c)2000-2016 FFmpeg开发人员     用gcc 4.8构建(Ubuntu 4.8.4-2ubuntu1~14.04.1)     配置: - prefix = / home / rhinchley / q10 / ffmpeg_build --pkg-config-flags = - static --extra-cflags = -I / home / rhinchley / q10 / ffmpeg_build / include --extra-ldflags = - L / home / rhinchley / q10 / ffmpeg_build / lib --bindir = / home / rhinchley / q10 / bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree     libavutil 55. 24.100 / 55. 24.100     libavcodec 57. 42.100 / 57. 42.100     libavformat 57. 36.100 / 57. 36.100     libavdevice 57. 0.101 / 57. 0.101     libavfilter 6. 45.100 / 6. 45.100     libswscale 4. 1.100 / 4. 1.100     libswresample 2. 0.101 / 2. 0.101     libpostproc 54. 0.100 / 54. 0.100

答案 2 :(得分:0)

团队合作:拆分视频源并让两个进程交替记录时间范围。您将要测试启动时间的变量以及它的变量。您可能希望将进程优先级设置为实时以减少开始时间差异。会有一些重叠,但听起来就像我推断的应用程序可能没问题。例如:

p1: sRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRR...
p2: wwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwww...

                    time -->

s: startup
R: running
w: wait