MPEG-TS, Android и FFMPEG - PullRequest
       133

MPEG-TS, Android и FFMPEG

3 голосов
/ 15 февраля 2012

Я получаю пакеты MPEG-TS (транспортный поток MPEG) с мультиплексированными потоками видео H.264 и аудио AAC.Мне нужно иметь возможность показывать аудио и видео на телефоне Android.Я предполагаю, что мне нужно:

  • MPEG-TS демультиплексор
  • AAC декодер
  • H.264 декодер
  • Синхронизировать аудио ивоспроизведение видео

Предполагая, что я прав (в Android 2.x), демультиплексор MPEG-TS не является частью ОС и должен быть портирован, декодер AAC и H.264 являются частьюОС Android, но я не уверен, есть ли у них интерфейс, который позволяет передавать данные в буферах и разрешают ли они взаимную синхронизацию по времени.В худшем случае эти компоненты также должны быть перенесены сюда.

Не могли бы вы дать мне несколько советов, с чего начать?Я думал о портировании FFMPEG.Есть ли другие способы?

С уважением, STEN

Ответы [ 4 ]

2 голосов
/ 19 августа 2012

Android 4.x имеет OpenMAX, который может воспроизводить TS с H264 и AAC. Вам даже не нужно беспокоиться о синхронизации аудио и видео.

Посмотрите на пример нативной медиа в NDK.

Если вы хотите поддерживать предыдущие версии Android, то ffmpeg может быть хорошим выбором, но максимум, который он может вам дать, это просто декодированные видеокадры в RGB или любом другом формате и декодированные аудио в PCM. Тогда вам придется самостоятельно выполнять рендерер и воспроизведение аудио. Я бы порекомендовал прочитать этот урок - http://dranger.com/ffmpeg/. Это не специфично для Android, но даст вам представление о том, как работает воспроизведение видео.

1 голос
/ 15 февраля 2012

В Gingerbread (2.3), на самом деле в платформе stagefright есть парсер MPEG TS, который вы можете использовать.Кроме того, я считаю, что он хорошо интегрирован с декодерами H264 и AAC.Парсер MPEG TS нигде не афишируется, но служба поддержки молча сидит там.Я полагаю, что они принесли его для поддержки потоковой передачи Apple HTTP Live в HC или более поздней версии, но код также находится в кодовой базе Gingerbread (2.3).С незначительной модификацией в структуре, вы можете воспроизводить прямую трансляцию http (которая на самом деле отправляет пакеты TS).Я полагаю, что приведенная выше информация будет полезна для вас.

Vibgyor

1 голос
/ 15 февраля 2012

Вы можете обратиться к проекту android-ffmpeg на github.

https://github.com/guardianproject/android-ffmpeg

0 голосов
/ 11 сентября 2012

(ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я лично участвую в разработке бесплатной программы с открытым исходным кодом, ссылка на которую приведена ниже)

Статическая версия FFMpeg (как для библиотеки, так и для командной строки) предоставляется также ZShaolin http://dyne.org/software/zshaolinсодержит другие инструменты преобразования медиа.

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

...