持续时间参数被忽略

Ste*_*nny 5 audio ffmpeg

我正在将 FLAC 文件转换为 AAC。我注意到输出文件的持续时间是关闭的。如果您明确设置输出持续时间,情况也是如此,它只会被忽略

$ ffmpeg -i foo.flac -t 00:02:52.48 -c:a aac -strict -2 bar.aac
[flac @ 000000000035d960] max_analyze_duration 5000000 reached at 5015510 microseconds

Input #0, flac, from 'foo.flac':
  Duration: 00:02:52.48, bitrate: 446 kb/s
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Output #0, adts, to 'bar.aac':
    Stream #0:0: Audio: aac, 44100 Hz, stereo, fltp, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (flac -> aac)
Press [q] to stop, [?] for help
size=    2770kB time=00:02:52.50 bitrate= 131.5kbits/s
video:0kB audio:2719kB subtitle:0 global headers:0kB muxing overhead 1.867920%
Run Code Online (Sandbox Code Playgroud)

结果

$ ffmpeg -i foo.flac -i bar.aac    
Input #0, flac, from 'foo.flac':
  Duration: 00:02:52.48, bitrate: 446 kb/s
Input #1, aac, from 'bar.aac':
  Duration: 00:02:49.29, bitrate: 134 kb/s
Run Code Online (Sandbox Code Playgroud)

我可以更改我的命令以使输入和输出持续时间匹配吗?

Nic*_*org 7

“原始” AAC 文件不包含有关文件内容的信息。当您启用所有调试信息时,您可以看到根据导入 aac 文件时的比特率来测量时间:

[aac @ 0xa82ba40] Estimating duration from bitrate, this may be inaccurate

但是,当您将 aac 文件打包到例如 MPEG-4 容器中时,所有需要的内容都存储在该容器中。尝试将您的 flac 音频文件编码为 aac 并使用这些参数将其混合到 .m4a 容器中,看看如果您再次导入 .m4a 文件会发生什么:

ffmpeg -i foo.flac -t 00:02:52.48 -c:a aac -strict -2 bar.m4a

  • .m4a(实际上是一个不同名称的 MP4 文件)通常用于仅包含音频的 MP4 文件,并且 ffmpeg 将 output.m4a 识别为 MP4 文件。不过+1,很好的答案。 (2认同)