0

我正在尝试使用命令用 ffmpeg 转换声音:

fmpeg -y -i /Users/Artem/Sites/waprik/testing/orig.mp4 -acodec libfaac -b:a 64k -ar 41000 -ac 2 -threads 0 -vn /Users/Artem/Sites/waprik/public/testing.m4a

原始声音是4:18分钟,但输出声音持续时间是4分钟,听起来很加速。我该如何解决?

顺便说一句,原声是

Duration: 00:04:18.81
Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s
    Metadata:
      creation_time   : 2014-03-07 05:45:06
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
4

1 回答 1

2

您输入错误的音频速率。它应该是 44100 而不是 41000:

ffmpeg -y -i /Users/Artem/Sites/waprik/testing/orig.mp4 -acodec libfaac -b:a 64k -ar 41000 -ac 2 -threads 0 -vn /Users/Artem/Sites/waprik/public/testing.m4a

这是证明它的数学!您的初始曲目为 4 分 18 秒或 258 秒。您的转化率与实际转化率的比率为 41000/44100,即 0.9297052。将该比率乘以 258 秒的曲目,我们最终得到 239.86 秒的曲目……或 3 分 59.86 秒。

发生的事情是,您告诉 ffmpeg 不是每秒 44100 帧,而是实际上只有 41000 帧。因此,它抓住了 44100 帧中的 41000 帧并调用它一秒钟,即使它确实不是。结果是您最终会得到一个更快/更短、稍微降级的音频文件。

于 2014-06-06T12:53:31.440 回答