2015-04-17 3 views
2

Я пытаюсь нарисовать пользовательский вид формы сигнала из декодированного аудиофайла. Проблема в том, что, когда я использую класс MediaCodec для декодирования звукового файла m4a в pcm, процесс декодирования может занять много времени.Рисование звукового сигнала из декодированного звукового файла в Android

Я получил this CTS test, чтобы получить декодированный массив.

Есть ли способ свести к минимуму процесс декодирования или получить соответствующую информацию о кадрах аудиофайлов без декодирования всего файла каждый раз.

ответ

2

Вам не нужно ждать, пока весь файл будет декодирован, вы можете использовать декодированные данные из каждого кадра, как только он будет доступен.

В тесте CTS, который вы связали, посмотрите строки 223-234 - здесь из декодера был получен буфер декодированных данных, который копируется в выходной буфер. Если вы измените это, чтобы обрабатывать данные прямо там, вы можете немедленно обработать декодированные данные, не дожидаясь полного файла. (Так будет выполняться и воспроизведение файла.)

Помните, что вы не можете предположить размер выходных кадров, это зависит от размера кадра кодека, используемого в файле. (Для наиболее распространенных версий AAC это 1024 образца.) Таким образом, в зависимости от того, как вы хотите обрабатывать выходные данные, вы можете захотеть, если необходимо, добавить его в несколько более крупные куски.

Смежные вопросы