Как создать собственный медиаплеер для воспроизведения пользовательского кодека в Android? - PullRequest
14 голосов
/ 07 апреля 2011

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?

Любые советы с благодарностью.

Ответы [ 3 ]

3 голосов
/ 07 июля 2011

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

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

2 голосов
/ 14 июля 2011

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

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

2 голосов
/ 13 июля 2011

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

...