ffmpeg:使用重叠段保存RTSP流

时间:2017-01-22 23:13:21

标签: ffmpeg

我有一个RTSP流,我需要将其分段为2s段,重叠为1。

t(s): 0----1----2----3----4----5----6----7----8----9----10---->

vids: |--1.mp4--|--3.mp4--|--5.mp4--|--7.mp4--|--9.mp4--|
           |--2.mp4--|--4.mp4--|--6.mp4--|--8.mp4--|

我可以每2秒拆分成2段,但我看不出每秒如何分割成2段。

到目前为止,我使用了以下内容:

ffmpeg \
-i rtsp://192.168.1.124:8553/unicast \
-c copy -flags +global_header \
-f segment \
-segment_time 2 \
-segment_format_options movflags=+faststart \
-reset_timestamps 1 \
%d.mp4 \

我想的方法是复制流,延迟1秒,然后单独分段,但这似乎很浪费,而且无法保证重叠。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我尝试了很多东西,包括内置tee过滤器以及split复杂过滤器,并尝试应用-muxdelay 1

但是,最好和最可靠的性能结果是将输出流传递给ffmpeg的两个独立实例(我知道效率低下):

ffmpeg \
    -i rtsp://10.10.128.213:8553/unicast \
    -f nut - | tee >(ffmpeg -y -i - -f nut -c copy -f segment -segment_time 2 -reset_timestamps 1 $VID_DIR/test_1_%d.mp4) \
               >(ffmpeg -y -itsoffset 1 -i - -f nut -c copy -f segment -segment_time 2 -reset_timestamps 1 $VID_DIR/test_2_%d.mp4) \
         > /dev/null

除此之外的所有方法都会导致细分不均匀。