为什么带有libfdk_aac编码的ffmpeg会在音频文件的开头减少25ms?

时间:2019-05-02 15:12:55

标签: ffmpeg

由于质量问题,我将编码从aac切换到libfdk_aac。我注意到,采用新编码后,音频文件的一小部分将在开始时被剪切掉。我用多个文件进行了测试。这是我正在使用的命令:

ffmpeg -y -noaccurate_seek -i file.mp3 -b:a 260k -c:a libfdk_aac -vn -movflags +faststart output.m4a

我尝试了不同的变体,但始终以剪切文件结束。

这是波形编辑器的输出

源文件:

enter image description here

输出:

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为几年前切换到fdk-aac后我已经观察到类似的情况,但是我不确定是否长达25m(可疑地接近某些AAC配置文件的默认颗粒长度为44100hz,1024/44100〜 = 0.023s)。可能是以前的aac编码器(ffmpeg原生编码器)在某种程度上有所不同吗?

编写了一个小脚本来进行复制,但是看不到任何胆大的差异。它还尝试使用libfdk_aac进行解码。希望它会有用。

alias ffmpeg='docker run --rm -v "$PWD:$PWD" -w "$PWD" mwader/static-ffmpeg:4.1.3'

# test file i used
# ffmpeg -y -f lavfi -i sine -t 1 -ac 2 -ar 44100 sine.wav

# encode with native and fdk aac
ffmpeg -y -i $1 -c:a aac $1.native_aac.mp4
ffmpeg -y -i $1 -c:a libfdk_aac $1.fdk_aac.mp4

# decode native with native and fdk_aac
ffmpeg -y -i $1.native_aac.mp4 $1.native_aac.mp4.native_aac.wav
ffmpeg -y -c:a libfdk_aac -i $1.native_aac.mp4 $1.native_aac.mp4.fdk_aac.wav

# decode fdk_aac with native and fdk_aac
ffmpeg -y -i $1.fdk_aac.mp4 $1.fdk_aac.mp4.native_aac.wav
ffmpeg -y -c:a libfdk_aac -i $1.fdk_aac.mp4 $1.fdk_aac.mp4.fdk_aac.wav