Как создать пользовательский медиаплеер для воспроизведения пользовательского кодека в Android?

N00b здесь (первый Android-проект). Мне был предоставлен специальный видеокодек, который был интегрирован с встроенной программой Android. Это файл .so, содержащий класс, наследующий от MediaPlayerInterface, а также пользовательскую реализацию MediaPlayerService для возврата экземпляров пользовательского класса кодека из фабричной функции create () для соответствующих типов файлов.

Я хочу использовать этот кодек как часть приложения для видеопроигрывателя, которое может быть установлено на телефонах, которые не содержат кодек в прошивке, путем размещения файла .so в папке libs / armeabi и вызова его через JNI.

Из ответа на этот вопрос я понимаю, что это невозможно сделать в рамках MediaPlayer, и я должен создать новый медиаплеер с нуля. Для начала я реализовал интерфейс на Java и настроил его на использование пользовательского представления (вместо VideoView), которое расширяет SurfaceView и использует экземпляр класса MediaPlayer для воспроизведения видео. Затем я заменил этот экземпляр MediaPlayer на собственный Java-класс медиа-проигрывателя. Я установил интерфейс JNI, подражая тому, как это делает android_media_MediaPlayer.cpp, и вызывает класс MediaPlayer C ++ в коде JNI. Теперь мне нужно заменить это на пользовательский класс медиаплеера C ++.

Здесь я начинаю сталкиваться с проблемами. Каков рекомендуемый подход для реализации пользовательского плеера? Есть ли это? Есть ли какая-либо онлайн-документация для любого из этих материалов, кроме траления через источник? Какую часть структуры я могу использовать и сколько мне придется переоценить? Должен ли я реализовать свой собственный эквивалент MediaPlayerService?

Любые советы очень ценятся.

Solutions Collecting From Web of "Как создать пользовательский медиаплеер для воспроизведения пользовательского кодека в Android?"

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

Ссылка на класс MediaPlayer

Надеюсь, ваш кодек не слишком интенсивен. Основная причина, по которой Android поддерживает только H.264 – это (я думаю), что в большинстве устройств есть аппаратная поддержка этого кодека. Другие кодеки должны будут обрабатываться процессором, который, вероятно, не будет достаточно мощным.

Почему вы не используете VLC вместо этого? Вы можете получить исходный код, поддерживает каждый формат. Обрезать его для своей цели, скинуть его, вуаля, c'est fini. Я знаю, что они сейчас взламывают код, вы можете прыгать и помогать им.

http://gigaom.com/video/vlc-for-android-demo-beta/