如何将流(协议 rtsp、编解码器 h264)保存在文件(容器 mp4)中?也就是说,输入无限流(使用 CCTV 摄像机),输出 mp4 格式的文件,大小为 5-10 分钟的录制时间。
操作系统:debian、ubuntu 软件:vlc、ffmpeg(avconv)
目前采用的是这种方案:
cvlc rtsp://admin:[email protected]:554/ch1-s1 --sout=file/ts:stream.ts
ffmpeg -i stream.ts -vcodec copy -f mp4 stream.mp4
但是它不能连续录制视频(重新启动 VLC 之间会丢失大约 10 秒的实时视频)
答案1
VLC 不支持分割输出文件。您可以尝试直接使用 ffmpeg,因为它支持输出分割:
ffmpeg -i rtsp://admin:[email protected]:554/ch1-s1 -c copy -map 0 -f segment -segment_time 600 -segment_format mp4 "out%03d.mp4"
答案2
了解如何将音频文件分割成 10 分钟的片段(即从巨大的长文件中分割出许多短文件,例如用于汽车立体声)可能会有所帮助,因为 avconv 手册页没有足够的解释价值。下面是一个有效的 shell 命令行,用于分割文件“interview.mp3”。使用较少的参数(map)在这里不起作用。一些音频文件需要 -map 0:0,观察输出提示。
avconv -i interview.mp3 -codec copy -map 0 -f segment -segment_format mp3 -segment_time 600 "iview%03d.mp3"