首页 > 解决方案 > ffmpeg filter_complex 修剪不同步

问题描述

命令行:

ffmpeg -i <INPUT> -filter-complex "<FILTER_COMPLEX>" -map "[ofa]" -map "[ofv]" -acodec aac -vcodec libx264 test.mp4

FILTER_COMPLEX内容:

[0:v]split=3[sv1][sv2][sv3];
[0:a]asplit=3[sa1][sa2][sa3];
[sv1]trim=start=200:duration=5,setpts=PTS-STARTPTS[ov1];[sa1]atrim=start=200:duration=5[oa1];
[sv2]trim=start=300:duration=5,setpts=PTS-STARTPTS[ov2];[sa2]atrim=start=300:duration=5[oa2];
[sv3]trim=start=400:duration=5,setpts=PTS-STARTPTS[ov3];[sa3]atrim=start=400:duration=5[oa3];
[ov1][ov2][ov3]concat=n=3:v=1:a=0[ofv];
[oa1][oa2][oa3]concat=n=3:v=0:a=1[ofa]

结果,输出的视频声音不同步,视频重定向到 00:00:00,但声音保持在原始时间位置。

因此,如何使用ffmpeg从一个视频中截取几个片段,重新组合成一个新的视频文件,并保持音画同步。


我试过[sa1]atrim=start=200:duration=5,setpts=PTS-STARTPTS[oa1]但出现错误:

Media type mismatch between the 'Parsed_atrim_4' filter output pad 0 (audio) and the 'Parsed_setpts_5' filter input pad 0 (video)

Cannot create the link atrim:0 -> setpts:0
Error initializing complex filters.
Invalid argument

标签: ffmpeg

解决方案


推荐阅读