【问题标题】:FFMPEG -F Concat Video, Audio Sync IssueFFMPEG -F Concat 视频、音频同步问题
【发布时间】:2017-04-13 03:04:27
【问题描述】:

我遇到了问题,要连接视频,它会丢失从上一个视频开始的音频同步和音频。

我尝试了以下两个链接/所以 Mulvya 的回答,但它们都不起作用:(

这是我正在尝试的代码:

1:重新编码文件a(1):

ffmpeg.exe -i "f:\1.avi" -af apad -vf scale=1280:720 -crf 15.0 -vcodec libx264 -acodec aac -ar 48000 -b:a 192k -coder 1 -rc_lookahead 60 -threads 0 -shortest -avoid_negative_ts make_zero -fflags +genpts 01.mp4

2:重新编码文件b(2):

ffmpeg.exe -i "f:\2.mp4" -af apad -vf scale=1280:720 -crf 15.0 -vcodec libx264 -acodec aac -ar 48000 -b:a 192k -coder 1 -rc_lookahead 60 -threads 0 -shortest -avoid_negative_ts make_zero -fflags +genpts 02.mp4

3:现在使用以下命令联系:

ffmpeg.exe -f concat -safe 0 -i "f:\files.txt" -c copy test.mp4

但音频与视频不同步;(

我还在 Dropbox 上上传了两个视频(以及输出):

Video Sync Issue Source And Result Files

所以,任何帮助,如何使音频与视频完美同步会很棒:)

【问题讨论】:

  • 由于您没有修剪输入文件,因此只需在 concat 步骤中执行编码。因此,files.txt 应该引用 1.avi 和 2.mp4,而不是复制,在 concat 步骤中使用 crf 15..etc。
  • @Mulvya,嗨,谢谢,我什至试过了,但没用。不过,非常感谢您的回复。另一个论坛上的其他人帮助了我:)
  • 是的,这是 concat demuxer 所必需的,

标签: windows ffmpeg concat


【解决方案1】:

其他一些用于同步音频和视频的解决方案

在您的输入文件中使用-bsf:v h264_mp4toannexb

ffmpeg.exe -i "1.avi" -af apad -vf scale=1280:720 -crf 15.0 -vcodec libx264 -acodec aac -bsf:v h264_mp4toannexb -ar 48000 -b:a 192k -coder 1 -rc_lookahead 60 -threads 0 -shortest -avoid_negative_ts make_zero -fflags +genpts output1.flv

第二个文件也一样

ffmpeg.exe -i "2.avi" -af apad -vf scale=1280:720 -crf 15.0 -vcodec libx264 -acodec aac -bsf:v h264_mp4toannexb -ar 48000 -b:a 192k -coder 1 -rc_lookahead 60 -threads 0 -shortest -avoid_negative_ts make_zero -fflags +genpts output2.flv

然后文件可以连接在一起

ffmpeg -f concat -safe 0 -i concat.txt -c copy -bsf:a aac_adtstoasc final.flv

concat.txt 文件包含在哪里

file 'output1.flv'
file 'output2.flv'

【讨论】:

    【解决方案2】:

    另一个论坛上的其他人帮助我找到了问题。因此,我将其作为答案发布在这里,以便其他人可以得到帮助。

    我担心要正确连接相同的帧大小、音频和视频编解码器,但我忘记了帧速率

    第一个示例视频(在我的问题中提到)帧率为 12,而第二个视频帧率为 25;这就是造成同步问题的原因。

    现在,我已将这两个视频 (-r 25) 的帧速率设置为 25,它的工作原理就像魅力 :)

    以下是完整的转换代码:

    ffmpeg.exe -i "f:\1.avi" -r 25 -af apad -vf scale=1280:720 -crf 15.0 -vcodec libx264 -acodec aac -ar 48000 -b:a 192k -coder 1 -rc_lookahead 60 -threads 0 -shortest -avoid_negative_ts make_zero -fflags +genpts 01.mp4
    

    希望它可以在不久的将来帮助像我这样的人。

    最好的问候

    【讨论】:

    • 这是迄今为止我在这里找到的唯一准确的解决方案,但这是创建大型输出文件,您也解决了吗?
    • @RohitDhiman,感谢您的反馈.. 非常感谢.. :)
    • 关键部分是 -vf scale=1280:720 -crf 15.0,因为它会创建 1280x720 像素的大图像尺寸,并使用高比特率 (crf 15)。如果您编码为较小的图像尺寸(例如 640x480 像素)并使用 CRF 21 的低比特率,您最终会在视频输出文件中获得更小的文件大小。
    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 2012-03-16
    • 2017-01-28
    • 1970-01-01
    • 2012-10-02
    • 2023-03-05
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多