Я пытаюсь кодировать необработанный звук (pcm_f32le) в кодированный звук AA C. Одна вещь, которую я заметил, это то, что я могу выполнить sh это с помощью инструмента CLI:
ffmpeg -f f32le -ar 48000 -ac 2 -c:a pcm_f32le -i out.raw out.m4a -y
Это прекрасно воспроизводится и прекрасно декодируется.
Шаги, которые я предпринял:
Когда я использую пример кода C: https://ffmpeg.org/doxygen/3.4/encode_audio_8c-example.html и переключаю кодировщик на codec = avcodec_find_encoder(AV_CODEC_ID_AAC);
Вывод различных образцов форматов, связанных с AA C, он предоставляет только FLTP. Это предполагает плоский / чередующийся формат.
Эта страница , кажется, предоставляет различные поддерживаемые форматы ввода для кода c.
Это сбивает с толку, потому что я не думаю, что мое необработанное захваченное аудио чередуется. Я, конечно, пытался передать его, и он не работает должным образом.
Он останется здесь с этим кодом на неопределенный срок после вызова avcodec_receive_packet
:
AVERROR(EAGAIN): output is not available in the current state - user must try to send input
Вопросы:
Как мне изменить пример кода из FFmpeg для преобразования необработанного аудио pcm_f32le в аудио кодированный AA C?
Почему CLI Умеет ли инструмент?
Я использую libsoundio для захвата необработанного звука из Linux Dummy Output. Интересно, как я мог получить плоский формат для передачи аудио с кодировкой AA C.
Если AA C не представляется возможным, то делает ли это с MP3?