Я получил FFmpeg (libffmpeg.so) на Android. Теперь мне нужно создать приложение вроде RockPlayer или использовать существующую мультимедийную среду Android для вызова FFmpeg.
Есть ли у вас шаги / процедуры / код / пример по интеграции FFmpeg на Android / StageFright?
Подскажите, пожалуйста, как мне использовать эту библиотеку для воспроизведения мультимедиа?
У меня есть требование, когда у меня уже есть аудио и видео транспортные потоки, которые мне нужно передать в FFmpeg и получить их декодирование / рендеринг. Как я могу сделать это на Android, поскольку API-интерфейсы IOMX основаны на OMX и не могут подключить FFmpeg здесь?
Также я не смог найти документацию по API FFmpeg, которую нужно использовать для воспроизведения.
android
ffmpeg
stagefright
android-ffmpeg
выщерблять
источник
источник
Ответы:
Вот шаги, которые я прошел, чтобы заставить ffmpeg работать на Android:
make
прочь. Вам также необходимо извлечь bionic (libc) и zlib (libz) из сборки Android, поскольку от них зависят библиотеки ffmpeg.Создайте динамическую библиотеку, упаковывающую функциональность ffmpeg, используя Android NDK . Там много документации о том, как работать с NDK. По сути, вам нужно написать некоторый код на C / C ++ для экспорта необходимой вам функциональности из ffmpeg в библиотеку, с которой java может взаимодействовать через JNI. NDK позволяет вам легко ссылаться на статические библиотеки, сгенерированные на шаге 1, просто добавьте строку, похожую на эту, в Android.mk:
LOCAL_STATIC_LIBRARIES := libavcodec libavformat libavutil libc libz
Используйте динамическую библиотеку ffmpeg из ваших java-источников. Там достаточно документации по JNI, у вас все должно быть в порядке.
Что касается использования ffmpeg для воспроизведения, есть много примеров (сам бинарный файл ffmpeg является хорошим примером), вот базовое руководство. Лучшая документация может быть найдена в заголовках.
Удачи :)
источник
По разным причинам мультимедиа было и никогда не было легким с точки зрения решения задачи без ущерба для эффективности. ffmpeg - это попытка улучшить его изо дня в день. Поддерживаются разные форматы кодеков и контейнеров.
Теперь, чтобы ответить на вопрос, как использовать эту библиотеку , я бы сказал, что это не так просто написать здесь. Но я могу помочь вам следующими способами .
1) В каталоге исходного кода ffmpeg у вас есть output_example.c или api_example.c . Здесь вы можете увидеть код, в котором выполняется кодирование / декодирование. Вы получите представление о том, какой API внутри ffmpeg следует вызывать. Это будет ваш первый шаг.
2) Dolphin player - проект с открытым исходным кодом для Android. В настоящее время есть ошибки, но разработчики работают постоянно. В этом проекте у вас есть готовая настройка, которую вы можете использовать, чтобы продолжить расследование. Вот ссылка на проект с code.google.com или выполните команду « git clone https://code.google.com/p/dolphin-player/ » в терминале. Вы можете увидеть два проекта с именами P и P86. Вы можете использовать любой из них.
Дополнительный совет, который я хотел бы предложить, заключается в том, что при сборке кода ffmpeg внутри build.sh вам необходимо включить muxers / demuxers / encoders / decoders тех форматов, которые вы хотите использовать. В противном случае соответствующий код не будет включен в библиотеки. Мне потребовалось много времени, чтобы понять это. Мысль поделиться этим с вами.
Немного Основ: Когда мы говорим видеофайл, например: avi, это комбинация аудио и видео
Видео файл = Видео + Аудио
Видео = Кодек + Muxer + Demuxer
кодек = кодер + декодер
=> Видео = кодировщик + декодер + Muxer + Demuxer (Mpeg4 + Mpeg4 + avi + avi - пример для контейнера avi)
Аудио = Кодек + Muxer + Demuxer
кодек = кодер + декодер
=> Аудио = кодер + декодер + Muxer + Demuxer (mp2 + mp2 + avi + avi - пример для контейнера avi)
Кодек (имя происходит от комбинации en * co * der / * dec * oder) - это только часть формата, которая определяет алгоритмы, используемые для кодирования / декодирования кадра. AVI - это не кодек, это контейнер, который использует видеокодек Mpeg4 и аудиокодек mp2.
Muxer / demuxer используется для объединения / отделения кадров от файла, используемого при кодировании / декодировании.
Поэтому, если вы хотите использовать формат AVI, вам нужно включить компоненты Видео + Компоненты аудио.
Например, для avi необходимо включить следующее. Кодер mpeg4, декодер mpeg4, кодер mp2, декодер mp2, avi muxer, avi demuxer.
phewwwwwww ...
Программно build.sh должен содержать следующий код:
Надеюсь, я не смутил вас больше после всего этого ...
Спасибо, Любая помощь, пожалуйста, дайте мне знать.
источник
Самая простая в создании, простая в использовании реализация, которую я нашел, сделана командой guardianproject: https://github.com/guardianproject/android-ffmpeg
источник
Я сделал небольшой проект по настройке и сборке X264 и FFMPEG с помощью Android NDK. Главное, чего не хватает, - это достойного интерфейса JNI, чтобы сделать его доступным через Java, но это самая простая часть (относительно). Когда я подойду к созданию интерфейса JNI, подходящего для моих собственных нужд, я настаиваю на этом.
Преимущество над системой сборки olvaffe заключается в том, что для сборки библиотек ей не нужны файлы Android.mk, она просто использует обычные make-файлы и набор инструментов. Это значительно снижает вероятность прекращения работы при извлечении нового изменения из FFMPEG или X264.
https://github.com/halfninja/android-ffmpeg-x264
источник
x264_param_parse': common.c:(.text+0x2864): undefined reference to
_DefaultRuneLocale 'collect2: ld возвращено 1 состояние завершения make: *** [x264] Ошибка 1После долгих исследований, сейчас это самая обновленная скомпилированная библиотека для Android, которую я нашел:
https://github.com/bravobit/FFmpeg-Android
FFmpeg release n4.0-39-gda39990
источник
Для создания своего приложения FFMPEG я использовал этот проект ( https://github.com/hiteshsondhi88/ffmpeg-android-java ), поэтому мне не нужно ничего компилировать. Я думаю, что это простой способ использовать FFMPEG в наших приложениях для Android.
Более подробная информация на http://hiteshsondhi88.github.io/ffmpeg-android-java/
источник
Вдохновленный многими другими реализациями FFmpeg для Android (в основном guadianproject ), я нашел решение (также с поддержкой Lame).
(Хромой и FFmpeg: https://github.com/intervigilium/liblame и http://bambuser.com/opensource )
позвонить в FFmpeg:
и обработать вывод консоли:
источник
Странно, что этот проект не был упомянут: AndroidFFmpeg от Appunite
Там есть довольно подробные пошаговые инструкции для копирования / вставки в командную строку, для ленивых людей, как я))
источник
У меня была та же проблема, я нашел здесь большинство ответов от. В итоге я написал оболочку на FFMPEG для доступа из Android с помощью одной строки кода.
https://github.com/madhavanmalolan/ffmpegandroidlibrary
источник
Сначала добавьте зависимость библиотеки FFmpeg
Тогда нагрузка в деятельности
Также используйте другую функцию от FFmpeg
источник