Audio 如何使用ffmpeg使视频和音频持续时间相同?

Audio 如何使用ffmpeg使视频和音频持续时间相同?,audio,video,ffmpeg,concatenation,Audio,Video,Ffmpeg,Concatenation,我正在合并一些用户生成的视频,有时会遇到音频同步问题。我认为当音频和视频持续时间不匹配时,它会失败。例如: ffprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 IMG_7679.mov 16.666016 ffprobe -v error -select_streams a:0 -show_entries stream=duration

我正在合并一些用户生成的视频,有时会遇到音频同步问题。我认为当音频和视频持续时间不匹配时,它会失败。例如:

ffprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 IMG_7679.mov
16.666016
ffprobe -v error -select_streams a:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 IMG_7679.mov
16.670998
问题是-如何在concat之前使音频和视频的持续时间相等,而不丢失内容


或者经典ffmpeg的concat以某种方式解决了这个问题,我应该使用它?

您可以使用
trim
和或
atrim
过滤器来剪切音频或视频的一部分

[v]trim=0:3.23,setpts=START-PTS[vout]
[a]atrim=0:3.23,asetpts=START-PTS[aout]

setpts和asetpts修复了时间戳

似乎真正的问题是,“如何在ffmpeg-concat中实现视频和音频同步?”不是真的。Ffmpeg concat只需要文件具有相同的音频和视频持续时间。我猜这是一个要求,否则,一切都会失去同步,而且视频越多到cancat,同步问题就越明显。谢谢,但这会导致内容(视频或音频)丢失,不是吗?是的,虽然这里我们讨论的是10毫秒,所以它不明显。第二件事是添加空白数据,但您会将其添加到末尾还是前端?然后拉伸也可以做一些事情,但是可以移除一些框架,我不知道为什么你有不同的尺寸。所以除非你确切地知道为什么你有不同的长度,在智能手机上拍摄用户生成的视频,这些视频的音轨和视频轨迹的持续时间总是不同的,做其他事情也没什么区别。奇怪的是,有时音频更长,有时视频更长。但你是对的,这通常是一个问题,女士会尝试你的建议。我也发现了这个,但我不确定它是做什么的
[input]aresample=async=1:first\u pts=0,apad,atrim=0:10[filtered]