Ответ 1
Вы можете найти исходный код Android, чтобы получить представление о том, как Android реализовал интерфейс MediaPlayer в Java. Ты можешь следуйте аналогичным строкам.
n00b здесь (первый Android-проект). Мне был предоставлен специальный видеокодек, встроенный в прошивку Android. Это файл .so, содержащий класс, который наследует от MediaPlayerInterface, а также пользовательскую реализацию MediaPlayerService для возврата экземпляров пользовательского класса кодека из функции create() factory для соответствующих типов файлов.
Я хочу использовать этот кодек как часть приложения для видеопроигрывателя, которое может быть установлено на телефонах, которые не содержат кодек в прошивке, путем размещения файла .so в папке libs/armeabi и вызова его через JNI.
Из ответа на этот вопрос Я понимаю, что это невозможно сделать в рамках MediaPlayer, и мне нужно создать новый медиаплеер с земли вверх. Для начала я реализовал интерфейс на Java и настроил его на использование пользовательского представления (вместо VideoView), которое расширяет SurfaceView и использует экземпляр класса MediaPlayer для воспроизведения видео. Затем я заменил этот экземпляр MediaPlayer на пользовательский медиа-плеер Java-класса. Я настроил интерфейс JNI, подражая тому, как это делает android_media_MediaPlayer.cpp, и вызывает класс MediaPlayer С++ в коде JNI. Теперь мне нужно заменить на на пользовательский класс медиа-проигрывателя С++.
Вот где я начинаю сталкиваться с проблемами. Каков рекомендуемый подход для реализации пользовательского плеера? Есть ли это? Есть ли какая-то онлайн-документация для любого из этих материалов, кроме траления через источник? Какую часть структуры я могу использовать и сколько мне нужно для переопределения? Должен ли я реализовать свой собственный эквивалент MediaPlayerService?
Любые советы очень ценятся.
Вы можете найти исходный код Android, чтобы получить представление о том, как Android реализовал интерфейс MediaPlayer в Java. Ты можешь следуйте аналогичным строкам.
Я надеюсь, что ваш кодек не слишком интенсивен. Основная причина, по которой Android поддерживает только H.264 - это (я думаю), что в большинстве устройств есть аппаратная поддержка этого кодека. Другие кодеки должны будут обрабатываться процессором, который, вероятно, не будет достаточно мощным.
почему бы вам не использовать VLC? вы можете получить исходный код, поддерживает каждый формат. обрезать его для вашей цели, скинуть его, вуаля, c'est fini. Я знаю, что они на самом деле взламывают код, вы можете прыгать и помогать им.