Как вы кодируете необработанный звук pcm_f32le в аудио кодированный AA C с помощью FFmpeg (C / C ++)? - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь кодировать необработанный звук (pcm_f32le) в кодированный звук AA C. Одна вещь, которую я заметил, это то, что я могу выполнить sh это с помощью инструмента CLI:

ffmpeg -f f32le -ar 48000 -ac 2 -c:a pcm_f32le -i out.raw out.m4a -y

Это прекрасно воспроизводится и прекрасно декодируется.

Шаги, которые я предпринял:

  1. Когда я использую пример кода C: https://ffmpeg.org/doxygen/3.4/encode_audio_8c-example.html и переключаю кодировщик на codec = avcodec_find_encoder(AV_CODEC_ID_AAC);

  2. Вывод различных образцов форматов, связанных с AA C, он предоставляет только FLTP. Это предполагает плоский / чередующийся формат.

  3. Эта страница , кажется, предоставляет различные поддерживаемые форматы ввода для кода c.

Это сбивает с толку, потому что я не думаю, что мое необработанное захваченное аудио чередуется. Я, конечно, пытался передать его, и он не работает должным образом.

Он останется здесь с этим кодом на неопределенный срок после вызова avcodec_receive_packet:

AVERROR(EAGAIN):   output is not available in the current state - user must try to send input

Вопросы:

  1. Как мне изменить пример кода из FFmpeg для преобразования необработанного аудио pcm_f32le в аудио кодированный AA C?

  2. Почему CLI Умеет ли инструмент?

  3. Я использую libsoundio для захвата необработанного звука из Linux Dummy Output. Интересно, как я мог получить плоский формат для передачи аудио с кодировкой AA C.

  4. Если AA C не представляется возможным, то делает ли это с MP3?

1 Ответ

1 голос
/ 22 января 2020

Найти здесь рабочий пример того, как кодировать raw pcm_f32le в c с помощью ffmpeg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...