>我有一个 RTSP 流,我需要用 2s 段和 1s 重叠的段对其进行分段。
即
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 秒拆分为 2s 段,但我看不到如何每秒拆分为 2s 段。
到目前为止,我已经使用了以下内容:
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 秒,然后分别分段,但这似乎很浪费,而且没有办法保证重叠。
有什么想法吗?
我尝试了很多东西,包括内置的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
除了这种方法之外,所有方法都导致分割非常不均匀。