首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将RTSP流连续保存为指定长度(10分钟)的多个mp4文件

将RTSP流连续保存为指定长度(10分钟)的多个mp4文件
EN

Stack Overflow用户
提问于 2019-06-03 16:24:21
回答 2查看 6.6K关注 0票数 1

我正在录制RTSP流从相机到.mp4文件使用ffmpeg,我想滚动成多个文件与10分钟长的每个视频。

目前我有一个解决方案:我正在设置一个时间长度'00:10:00',在它完成后,我将用新的进程重新启动下面的命令。示例:

代码语言:javascript
复制
ffmpeg -rtsp_transport tcp -i <rtsp_url> -acodec copy -vcodec  copy  -t 00:10:00 D:\video_test.mp4

但是这个解决方案使得摄像头变得不稳定,RTSP流最终被破坏,并出现以下错误:

代码语言:javascript
复制
rtsp://10.96.41.14:9024/user=xxxx_password=xxx_channel=1_stream=0.sdp?real_stream: Operation not permitted

我想找到更好的解决方案来保持与RTSP流的持续连接(而不是创建带有-t标志的新进程)。

有没有人有更好的主意来持续记录流媒体?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-03 17:20:46

FFmpeg有一个segment多路复用器,你可以使用它。

基本形式是

代码语言:javascript
复制
ffmpeg -rtsp_transport tcp -i <rtsp_url> -c copy -f segment -segment_time 600 stream_piece_%d.mp4

请注意,分段复用器在关键帧处拆分,因此在获得的分段持续时间中可能会有较小的偏差。

票数 5
EN

Stack Overflow用户

发布于 2019-07-18 18:27:09

我想将@Gyan的答案扩展为我正在使用的解决方案。

在我的例子中,我想把流分割成普通的视频(可以回放),视频每小时0分钟开始。所以我使用了选项reset_timestampssegment_atclocktime

下面是我的完整ffmpeg命令:

代码语言:javascript
复制
ffmpeg -rtsp_transport tcp -i <rtsp_url> -f segment -strftime 1 \ 
    -segment_time 00:10:00 -segment_atclocktime 1 -segment_clocktime_offset 30 \
    -segment_format mp4 -an -vcodec copy -reset_timestamps 1 \ 
    record_%Y-%m-%d-%H.%M.%S.mp4
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56423581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档