ffmpeg 是否错误地解释了 .aif 文件?

ffmpeg 是否错误地解释了 .aif 文件?

在 Ubuntu 10.04 服务器上,我使用 apt 安装了 ffmpeg 包。之后 ffmpeg 就可以正常工作了。差不多了。

为了测试,我上传了一些音频文件。其中一个 aif 文件没有被正确解释。在我的主力机(Mac SnowLeopard)上,ffmpeg 告诉格式为

Stream #0.0: Audio: pcm_s24be, 44100 Hz, 2 channels, s32, 2116 kb/s

我的 Ubuntu 服务器显示:

Stream #0.0: Audio: pcm_s24be, 44100 Hz, stereo, s16, 2116 kb/s

这是错误的位深度。Ubuntu 无法转换文件并显示错误消息

[pcm_s24be @ 0xcd4b580]invalid PCM packet
Error while decoding stream #0.0

这当然不是事实。该文件完全有效。

ffmpeg 解释 aif 格式时是否存在任何已知问题?如何才能知道 ffmpeg 使用的是哪个版本的 aif-codec?有什么方法可以解决这个问题吗?


ffprobe 输出:

FFprobe version SVN-r20090707, Copyright (c) 2007-2009 Stefano Sabatini
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  built on Jan 20 2010 00:13:01, gcc: 4.4.3 20100116 (prerelease)
Input #0, aiff, from 'testfile.aif':
  Duration: 00:00:04.00, start: 0.000000, bitrate: 2117 kb/s
    Stream #0.0: Audio: pcm_s24be, 44100 Hz, stereo, s16, 2116 kb/s

更新 2:使用 -sample_fmt s32 强制转换不会改变任何东西。

奇怪的是:即使不使用 -sample_fmt s32,我也意识到转换正在运行并创建了有效的音频文件。只是上面有错误消息。

答案1

是的。根据 ffmpeg 用户组的信息,ffmpeg 和 libav 的维护者之间一直在进行“战争”。Ubuntu 开发团队中的某些人似乎站在了 libav 一边,故意为 ffmpeg 提供损坏的软件包。

不知道这是否都是真的,但至少我知道使用 apt 安装 ffmpeg 不起作用,而从源代码构建则起作用。

该主题的摘要可以在这里找到:

http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html

尽管这只是故事的 ffmpeg 方面。

相关内容