Что означает профиль в c кодированном аудио - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь объединить два видеофайла с ffmpeg concat demuxer, для большей части он работает просто отлично! Но когда я пытаюсь объединить видео с двумя разными аудио профилями с одним и тем же кодом c, оно согласуется с результирующим видео со странной проблемой звука. И при перекодировании полученного видео оно выдает много ошибок, связанных со звуком.

Вот вывод 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=. Мне удалось воспроизвести 28 и 1, но мне не удалось это сделать 4

28 = he_aac_v2 1 = ffmpeg default

Так что я хочу узнать больше всего, Что эти разные значения означают для c? А как их воспроизвести с помощью любого c кодирования?

1 Ответ

1 голос
/ 22 апреля 2020

Согласно 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 AA C (-c:a aac) не имеет возможности выводить профили HE или HEv2.

Если вам нужен профиль HE (-profile:a 4 или -profile:a aac_he), вам придется использовать другой кодировщик, например -c:a libfdk_aac, -c:a aac_at (только для macOS / iOS) или отдельный автономный кодировщик AA C.

...