我有一个未压缩的 .wav 文件,我将其转换为 96k MP3 文件:
ffmpeg.exe -i song.wav -vn -b:a 96000 -ac 2 -ar 48000 -acodec libmp3lame -y song.mp3
输入文件有 637386 个样本。输出有 639360 个样本。 MP3 中的额外样本在文件开头全部为零。这种情况发生在我翻译的每个文件中,并且使用的编解码器不仅仅是 libmp3lame。这是 FFMPEG 错误还是编解码器错误?为什么要添加这些?有没有办法阻止它们被添加?
编辑:简化的示例和控制台输出:
ffmpeg.exe -i song.wav -y song.mp3
ffmpeg version N-55796-gb74213d Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 26 2013 19:43:51 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 42.100 / 52. 42.100
libavcodec 55. 29.100 / 55. 29.100
libavformat 55. 14.102 / 55. 14.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 82.102 / 3. 82.102
libswscale 2. 5.100 / 2. 5.100
libswresample 0. 17.103 / 0. 17.103
libpostproc 52. 3.100 / 52. 3.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'song.wav':
Duration: 00:00:13.28, bitrate: 1538 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Output #0, mp3, to 'song.mp3':
Metadata:
TSSE : Lavf55.14.102
Stream #0:0: Audio: mp3 (libmp3lame), 48000 Hz, stereo, s16p
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le -> libmp3lame)
Press [q] to stop, [?] for help
size= 208kB time=00:00:13.29 bitrate= 128.4kbits/s
video:0kB audio:208kB subtitle:0 global headers:0kB muxing overhead 0.111205%
wav 中的样本数量:637386
mp3中的样本数:639984
FFmpeg中LAME添加的延迟量为
avctx->initial_padding = lame_get_encoder_delay(s->gfp) + 528 + 1;
来自FAQLAME项目的:
2. 为什么 LAME 在每首歌的开头都添加了静音?
文件开头的解码器延迟:
All decoders我测试过引入528个样本的延迟。那
即,解码 mp3 文件后,输出将有 528 个样本
前面附加0。这是因为标准
ISO 使用的 MDCT/滤波器组例程有 528 个样本延迟。它
可以用 0 个样本编写 MDCT/filterbank 例程
延迟(参见 Takehiro 的 MDCT/filterbank 例程的描述
LAME编码如下)但我不知道有人这样做过。
此外,由于 MDCT 帧的重叠性质,
第一个颗粒的前半部分(1 个颗粒=576 个样本)没有
与前一帧重叠,导致第一帧衰减
N 个样本。 N 的值取决于窗口类型。为了
“STOP_TYPE”和“SHORT_TYPE”,N=96,而对于“START_TYPE”和
“正常_类型”,N=288。 LAME 3.56 及以上版本制作的第一帧
始终为 STOP_TYPE 或 SHORT_TYPE。
文件开头的编码器延迟:
基于 ISO 的编码器(BladeEnc、8hz-mp3 等)使用 MDCT/滤波器组
例程与解码中使用的例程类似,因此也引入
他们自己的528个样本延迟。编码和解码后的 .wav 文件将有一个
1056 个样本延迟(1056 个样本将附加到开头)。
常见问题解答中的差异与您的输出中的差异不同,可能是因为我不知道的技术细微差别,但这不是一个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)