我有一个未压缩的.wav文件,可以将其转换为96k MP3文件:
ffmpeg.exe -i song.wav -vn -b:a 96000 -ac 2 -ar 48000 -acodec libmp3lame -y song.mp3
Run Code Online (Sandbox Code Playgroud)
输入文件有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%
Run Code Online (Sandbox Code Playgroud)
WAV中的样本数量:637386
mp3中的样本数:639984
LAME在FFmpeg中增加的延迟量为
avctx->initial_padding = lame_get_encoder_delay(s->gfp) + 528 + 1;
Run Code Online (Sandbox Code Playgroud)
从LAME项目的常见问题解答中:
2.为什么LAME会在每首歌的开头添加静音?
文件开头的解码器延迟:
所有解码器我测试过引入528个样本的延迟。也就是说,在解码mp3文件后,输出将在前面附加528个0的样本。这是因为ISO使用的标准MDCT /过滤器例程的采样延迟为528。可以编写一个采样延迟为0的MDCT / filterbank例程(请参阅下面的LAME编码中对Takehiro的MDCT / filterbank例程的描述),但我不知道有人这样做。此外,由于MDCT帧的重叠性质,第一颗粒的前半部分(1个颗粒= 576个样本)不具有与之重叠的先前帧,从而导致前N个样本的衰减。N的值取决于窗口类型。对于“ STOP_TYPE”和“ SHORT_TYPE”,N = 96,而对于“ START_TYPE”和“
文件开头的编码器延迟:
基于ISO的编码器(BladeEnc,8hz-mp3等)使用的MDCT /滤波器组例程类似于解码所用的例程,因此也引入了它们自己的528采样延迟。编码和解码的.wav文件将具有1056个采样延迟(1056个采样将附加到开头)。
常见问题解答中的差异与您的输出中的差异不同,可能是由于我不知道的技术细微差别,但这不是错误。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |