我正在创建一个像这样的切割清单
file 't1.MP4'
inpoint 1.45067
outpoint 3.18133
file 't2.MP4'
inpoint 3.45067
outpoint 6.18133
...
我就像这样使用它
ffmpeg -y -f concat -safe 0 -i list.txt -c:v libx264 -c:a aac -af aresample=async=1 -pix_fmt yuv420p output.mp4
输出几乎总是在开始时包含静止图像,有时是视频时间的一半,有时更少,显示第一帧然后最终视频开始。我注意到,inpoint
和outpoint
分开的越少,开始时的静止图像就越长。也许它也与inpoint
和outpoint
的数量有关。
我该如何解决这个问题?
答案 0 :(得分:1)
concat demuxer输出的数据包数量超出了范围中指定的数据包,因为视频需要更早的帧才能解码。
尝试
ffmpeg -y -f concat -safe 0 -copyts -segment_time_metadata 1 -i list.txt -vf select=concatdec_select,setpts=N/FRAME_RATE/TB,format=yuv420p -c:v libx264 -af aselect=concatdec_select,asetpts=N/SR/TB -c:a aac output.mp4
我假设所有文件都有相同属性的视频和音频,即帧率,分辨率,音频采样率,频道......等等。