Как я могу использовать ffmpeg на Android? - PullRequest
6 голосов
/ 09 мая 2011

У меня есть очень простой вопрос относительно Android и ffmpeg. Я получил ffmpeg от http://bambuser.com/opensource и смог скомпилировать его для ARM.

Результатами являются двоичные файлы (ffmpeg), а также несколько libsomething.so файлов.

Мой вопрос: достаточно ли этого для декодирования видео? Как тогда я на самом деле использую ffmpeg?

Для загрузки библиотеки у меня есть:

static {
    System.load("/data/data/com.package/lib/libavcodec.so");
 }

Хорошо загружается. Но что тогда?

Более подробное объяснение: я видел другие проекты, где люди имели свой источник ffmpeg в каталоге JNI в проекте. Они также создали несколько файлов Android.mk и немного кода на C вместе с ним. Мне это тоже нужно? Зачем мне сначала создавать файлы .so, а затем снова копировать исходный код ffmpeg?

Я знаю NDK и как он должен работать, но я никогда не видел пример того, как можно было бы вызвать функции ffmpeg, используя его, потому что люди, кажется, скрывают свои реализации (что-то понятно), но даже не дают полезных указателей или Примеры.

Скажем так, я хотел декодировать видео файл. Какие родные методы мне нужно реализовать? Как мне запустить проект? Какие типы данных должны быть переданы? и т.д. Конечно, здесь есть несколько человек, которые, по крайней мере, сделали это, я знаю это по поиску часов и часов.

1 Ответ

6 голосов
/ 10 мая 2011

Для вашего первого вопроса;

Просто сборки недостаточно для правильного использования библиотек ffmpeg.Вы должны также обернуть эти файлы в правильном порядке.Потому что эти так файлы NEDED других библиотек во время ссылки.Вы можете отобразить информацию заголовка этого файла, используя.

objdump -x libavcodec.so | grep NEEDED

Так что вам нужно обернуть эти файлы через Android.mk.Вы можете проверить эту ссылку .

Второй;

Вам нужны только файлы заголовков из проекта ffmpeg.Реализация будет связана с так библиотеки.Возможно, это связано с тем, что разработчики не удосужились отфильтровать заголовочные файлы.

И последнее;

Пока ваши мысли кажутся правильными, большинство нынешних разработчиков пытаются использовать ffmpeg.но им не хватает документации и примеров кодов.

...