【问题标题】:How make video and audio duration the same with ffmpeg?如何使 ffmpeg 的视频和音频持续时间相同?
【发布时间】:2020-12-11 07:11:17
【问题描述】:

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

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 以某种方式解决了这个问题,我应该使用它?

【问题讨论】:

  • 似乎真正的问题是,“如何在 ffmpeg-concat 中同步视频和音频?”
  • 并非如此。 ffmpeg-concat 只需要文件具有相同的音频和视频持续时间。猜猜这是一个要求,否则,一切都会不同步,并且 cancat 的视频越多,同步问题就越明显。

标签: audio video ffmpeg concatenation


【解决方案1】:

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

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

setpts 和 asetpts 修复时间戳

【讨论】:

  • 谢谢,但这会导致内容(视频或音频)丢失,不是吗?
  • 是的,虽然我们在这里谈论的是 10 毫秒,所以它并不明显。第二件事是添加空白数据,但是,您会将其添加到末尾还是前面?然后拉伸也可以做一些事情,但可以删除一些框架,我不知道你有不同尺寸的原因是什么。
  • 所以除非你确切地知道为什么你有不同的长度,否则做其他事情并没有什么不同
  • 我使用智能手机上拍摄的用户生成的视频,这些视频总是具有不同的音频和视频轨道持续时间。奇怪的是,有时音频更长,有时视频更长。但你是对的,这通常是毫秒的问题。会尝试你的建议。我也找到了这个,但我不确定它的作用[input]aresample=async=1:first_pts=0,apad,atrim=0:10[filtered]
猜你喜欢
  • 2016-06-08
  • 2015-05-29
  • 1970-01-01
  • 2015-02-08
  • 2016-12-17
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多