【问题标题】:What does profile means in an aac encoded audio配置文件在 aac 编码音频中意味着什么
【发布时间】:2020-04-22 12:49:55
【问题描述】:

我正在尝试将两个视频文件与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_v21 = ffmpeg default

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

【问题讨论】:

    标签: audio encoding ffmpeg aac ffprobe


    【解决方案1】:

    根据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 编码器。

    【讨论】:

    • 我看到有两个MPEG2条目`#define FF_PROFILE_MPEG2_AAC_LOW 128 #define FF_PROFILE_MPEG2_AAC_HE 131`有什么区别`FF_PROFILE_AAC_LOW FF_PROFILE_AAC_HE`
    • @AnantaProdhan 根据FFmpeg AAC encoder documentation aac_low 是“默认的,AAC 'Low-complexity' profile。兼容性最好,质量也不错。”在典型文件中找到的常见 AAC 配置文件。他是High-Efficiency
    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2010-10-21
    • 2014-02-08
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多