воспроизведение ffmpeg на андроид - PullRequest
1 голос
/ 01 ноября 2011

Мне удалось скомпилировать библиотеки ffmpeg для Android, и я могу загрузить их в свое приложение jni для Android. Теперь начал вызывать функции ffmpeg и следовать онлайн-учебникам. Я прочитал там, что мне нужен также порт SDL для Android для рендеринга аудио / видео.

Я посмотрел на libsdl, и это кажется довольно сложным для использования на Android, тем более что мне просто нужен последовательный рендеринг сэмплов аудио / видео, есть ли более простое решение (с примерами), как рендерить декодированные буферы? Должен ли я передавать декодированные медиа-буферы из frrmpeg обратно в Java для рендеринга?

Если мне нужно использовать SDL, есть ли учебник, как легко интегрировать его на Android с ffmpeg?

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Есть несколько предложений:

ffmpeg декодирует видео pix_fmt - это yuv420p, вам нужно конвертировать его в BGR32 или RGB565. Если вы планируете использовать Bitmap и SurfaceView для рендеринга видеокадра.

Если на ваших устройствах Android 2.2+, есть функции c для копирования растровых данных в Bitmap. Получая указатель с помощью AndroidBitmap_lockPixels и AndroidBitmap_unlockPixels.

Если ваши устройства не поддерживают этот способ, Вы можете поместить двоичные данные в ByteBuffer и использовать Bitmap.copyPixelsFromBuffer ().

Если ваш SurfaceView будет масштабироваться больше, вы должны решить проблему сглаживания:

Можешь? Как сделать анти-псевдоним для SurfaceView в Android?

Если OpenGL является предпочтительным решением, GLThread может занимать больше процессорного времени, лучше использовать draw на dirty.

Тема такая интересная. :)

0 голосов
/ 10 апреля 2012

Думаю, дельфин-плеер (http://code.google.com/p/dolphin-player/) для андроида использовал libSDL

...