首页 > 解决方案 > 配置文件在 aac 编码音频中意味着什么

问题描述

我正在尝试将两个视频文件与ffmpeg concat demuxer它的大部分工作正常连接!但是,当我尝试使用相同的编解码器连接具有两个不同音频配置文件的视频时,它会与产生的具有奇怪声音问题的视频连接。并且在重新编码生成的视频时,它会吐出很多与音频相关的错误。

这是来自不同视频文件的一些音频流的 ffprobe 输出视频 1

[STREAM]
index=1
codec_name=aac
codec_long_name=unknown
profile=4
codec_type=audio
codec_time_base=1/48000
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
sample_fmt=fltp
...
[/STREAM]

视频 2

[STREAM]
index=1
codec_name=aac
codec_long_name=unknown
profile=1
codec_type=audio
codec_time_base=1/48000
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
sample_fmt=fltp
...
[/STREAM]

视频 3

[STREAM]
index=1
codec_name=aac
codec_long_name=unknown
profile=28
codec_type=audio
codec_time_base=1/48000
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
sample_fmt=fltp
...
[/STREAM]

看看不同的profile=值。我能够复制281失败了4

28 = he_aac_v2 1 = ffmpeg default

所以我最想知道的是,这些不同的值对于aac意味着什么?以及如何使用任何 aac 编码重现它们?

标签: audioencodingffmpegaacffprobe

解决方案


根据libavcodec/avcodec.h

FF_PROFILE_AAC_MAIN    0
FF_PROFILE_AAC_LOW     1
FF_PROFILE_AAC_SSR     2
FF_PROFILE_AAC_LTP     3
FF_PROFILE_AAC_HE      4
FF_PROFILE_AAC_HE_V2   28
FF_PROFILE_AAC_LD      22
FF_PROFILE_AAC_ELD     38

原生 FFmpeg AAC 编码器 ( -c:a aac) 无法输出 HE 或 HEv2 配置文件。

如果您需要 HE 配置文件 (-profile:a 4-profile:a aac_he),则必须使用其他编码器,例如-c:a libfdk_aac, -c:a aac_at(仅限 macOS/iOS)或单独的独立 AAC 编码器。


推荐阅读