我怎么可能保持文件(容器MP4)流(RTSP协议,编解码器H264)? 即,在输入的环形流(用CCTV摄像机),并在5-10分钟的记录时间mp4格式大小的输出文件。
操作系统: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秒的现场视频)。
见这个问题上的服务器故障和答案。 总之,切换工具。 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"
亚历山大花园解决方案适用于ffmpep
使用下面的版本。 更换avconv
与ffmpeg
。
./ffmpeg -i RTSP://10.2.2.19/live/ch01_0 -c复制-map 0 -f段-segment_time 300 -segment_format MP4 “捕获 - %03d.mp4”
我包括这头,因为FFmpeg的困惑过的版本,Ubuntu的分裂和快速发展。
ffmpeg的版本N-80023-gd55568d版权(C)2000至2016年FFmpeg的开发人员用gcc 4.8内置(Ubuntu的4.8.4-2ubuntu1〜14.04.1)配置:前缀= /家庭/ rhinchley / Q10 / ffmpeg_build --pkg -config-标志= - 静态--extra-CFLAGS = -I /家庭/ rhinchley / Q10 / ffmpeg_build / --extra包括-LDFLAGS = -L /家庭/ rhinchley / Q10 / ffmpeg_build / lib目录--bindir = /家/ rhinchley / Q10 / bin中--enable-GPL --enable-libass --enable-libfdk-AAC --enable-libfreetype建立--enable-了libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis - 使-libvpx --enable-libx264 --enable-libx265 --enable-非自由libavutil 55. 24.100 / 24.100 55. libavcodec的57 42.100 / 42.100 57. 57.了libavformat 36.100 / 36.100 57. 57. libavdevice 0.101 / 0.101 57 libavfilter 6. 45.100 / 6. 45.100 libswscale 4. 1.100 / 1.100 4 2 libswresample 0.101 / 0.101 2 54 libpostproc 0.100 / 0.100 54
团队工作:分割视频源和具有两个进程交替记录的时间帧。 你将要测试的启动时间是怎么变,怎么变也。 您可能需要设置的过程优先实时减少启动时间的差异。 会有一些重叠,但听起来像它可能为你的应用是确定从我推断。 例:
p1: sRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRR...
p2: wwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwww...
time -->
s: startup
R: running
w: wait