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

Rus*_*pov 17 streaming mp4 ffmpeg vlc rtsp

如何将流(协议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
Run Code Online (Sandbox Code Playgroud)

但它无法连续录制视频(重启后vlc会丢失大约10秒的直播视频).

Ale*_*den 22

请参阅有关服务器故障的此问题和答案.简而言之,切换工具.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"

  • 如果应用程序是"CCTV",我建议您使用`-segment_atclocktime 1`.因为这将尝试根据挂钟分开,而不是自录制开始以来的时间. (3认同)
  • Ffmpeg没有成为avconv而avconv不是新的ffmpeg.他们是不同的项目./sf/ask/663398081/ (2认同)

小智 9

Alexander Garden解决方案适用于ffmpep以下版本.替换avconvffmpeg.

./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


Stu*_*son -2

团队合作:分割视频源并让两个进程交替记录时间范围。您需要测试启动时间的变化程度以及它的变化程度。您可能希望将进程优先级设置为实时以减少启动时间差异。会有一些重叠,但根据我的推断,听起来这可能适合您的应用程序。例子:

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

                    time -->

s: startup
R: running
w: wait
Run Code Online (Sandbox Code Playgroud)