我有一个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秒,然后单独分段,但这似乎很浪费,而且无法保证重叠。
有什么想法吗?
答案 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
除此之外的所有方法都会导致细分不均匀。