2012-02-15 3 views
3

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

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

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

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

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

ответ

1

Вы можете обратиться к проекту Android-FFmpeg на GitHub.

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

+0

Вы пробовали это? Есть ли у вас опыт? Доступно несколько портов FFMPEG ... – STeN

+0

Да, есть несколько вариантов. Этот проект работает, я пробовал. – ciphor

1

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

Vibgyor

+0

Привет, вы думаете, что он может быть перенесен на 2.1 и 2.2? То есть назад, перенося парсер MPEG TS из рамки stagefright и связав его «каким-то образом» с декодерами H.264/AAC? – STeN

+0

Привет, MPEG-код парсера TS интегрирован в рамки stagefright в версии 2.3. Возможно, не так сложно отложить его в 2.2, поскольку 2.2 также поддерживает платформу stagefright, но я думаю, что будет очень сложно вернуть порт в 2.1, поскольку рамки stagefright отсутствуют в 2.1, и у вас есть только каркас opencore там. – Mukesh

+0

Vibgyor, вы указали на это небольшое исправление для пряников, чтобы включить поддержку TS MPEG. У вас есть ссылка, подробно описывающая это? – idlethread

2

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

Посмотрите на образец nativemedia в NDK.

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

+0

Привет, мы уже завершили работу на базе FFMPEG для HLS (H.264/AAC) для Android, и он работает хорошо! Усилия, которые мы инвестируем, чтобы иметь действительно работающие решения, составляли около 3-4 человек в месяц опытного разработчика. Проблема в том, что декодирование программного обеспечения на ARM6/VFP или на ARM7 без NEON или TEGRA происходит не так быстро, как может быть с поддержкой HW. Итак, теперь мы ищем интеграцию StageFright на 2.3x - пока не повезло - см., Например, там: http://stackoverflow.com/questions/11266891/how-to-enable-hw-decoder-via-stagefright-in-ffmpeg-android-port – STeN

+1

Используя стандартные API на 2.3, вы можете по крайней мере аппаратно ускорить декодирование AAC с OpenSL ES. – Dmitry

0

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

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

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

+2

Добро пожаловать в переполнение стека! Благодарим за отправку ответа! Обязательно внимательно прочитайте [FAQ по самопомощи] (http://stackoverflow.com/faq#promotion). Также обратите внимание, что * требуется *, что вы публикуете отказ от ответственности каждый раз, когда вы ссылаетесь на свой собственный сайт/продукт. –

+0

ACK. Спасибо за примечание. Тем не менее, я считаю, что эта информация полезна: у AFAIK нет никаких других переносимых файлов FFMpeg, статически скомпилированных для Android, и спрос на них на вашем форуме довольно востребован. Нет. Самостоятельное продвижение здесь ... Я просто пытаюсь " жить чистой и пусть ваша работа будет видна ». – Jaromil

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