Как описано в заголовке, я пытаюсь получить MediaPlayer
кадры (во время воспроизведения) и передать их в мой собственный код C ++ (используя JNI
).
Итак, я использую MediaPlayer
а также «setDisplay(SurfaceView)
«метод рисования пикселей на SurfaceView
,
Во время воспроизведения видео я используюgetDrawingCache
метод SurfaceView
чтобы получить последние пиксели видеокадра. Но я читал, что растровое изображение всегда будет черным.
Поэтому мой вопрос: возможно ли получить последний кадр, отображаемый MediaPlayer
, чтобы передать его в C ++ код?
PS: я должен использовать API уровня 8
Спасибо
Начиная с Android 4.1 они добавили MediaCodec Api, который позволяет вам получить доступ практически ко всему.
А в Android 4.3 добавлена возможность получать поток с поверхности.
http://developer.android.com/reference/android/media/MediaCodec.html
До этого вы в значительной степени застряли. Вы можете попробовать использовать ffmpeg + JNI через решение NDK.
Это кажется довольно трудным для выполнения, но хорошая новость в том, что если вы сделаете это, ваши фреймы будут уже прочитаны на уровне C ++.
Других решений пока нет …