Какой самый быстрый способ декодировать файл MP3, а затем кодировать в AAC на Android?
У меня есть рабочее решение с использованием MediaCodec и MediaExtractor, но декодирование 6-мегабайтного MP3 занимает 15 секунд + кодирование 15 секунд в AAC. Всего> 30 сек. Мне нужно что-то действительно быстрое <10 сек. Кто-нибудь знает более быстрое решение?
РЕДАКТИРОВАТЬ
Мое узкое место от самого Mediacodec. Предоставляемый ими байтовый буфер слишком мал. При установке MediaFormat на AAC входные буферы буфера только 4096 байт за раз слишком медленны для меня. Это хорошо для потоковой передачи, но не для файла в файл.
Я переключаюсь на C lib декодер, который декодирует за 3 секунды вместо 15 секунд. Но кодер все равно займет 15 сек. У кого-нибудь есть кодировщик AAC на C lib, который также может добавлять заголовки ADTS?
1 ответ
Похоже, вы сначала декодируете полный файл, а затем кодируете его. Это может закончиться быстрее, если вы сделаете это одновременно, то есть когда у вас будет достаточно выходных данных от декодера, чтобы предоставить полный входной кадр кодеру, передайте его. Это может помочь с некоторым параллелизмом, но я сомневаюсь, что это достаточно помогает, чтобы получить ускорение, которое вы хотите.