По разным причинам мультимедиа было и никогда не было легким с точки зрения решения задачи без ущерба для эффективности. 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
кодек = кодер + декодер
=> Видео = кодер + декодер + мультиплексор + демультиплексор (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 должен содержать следующий код:
--enable-muxer=avi --enable-demuxer=avi (Generic for both audio/video. generally Specific to a container)
--enable-encoder=mpeg4 --enable-decoder=mpeg4(For video support)
--enable-encoder=mp2 --enable-decoder=mp2 (For Audio support)
Надеюсь, я не смутил вас больше после всего этого ...
Спасибо, нужна помощь, пожалуйста, дайте мне знать.