1. Получить код:
мерзавец клон https://github.com/Bilibili/ijkplayer.git ijkplayer-андроид
CD ijkplayer-андроид
мерзавец контроль -B последнее k0.8.8
2. Перед Строить :
# Установить доморощенного, мерзавец, Yasm
рубин -e "$ (свернуться -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
заварить установить мерзавец
заварить установить Yasm
# Добавить эти строки в ~ / .bash_profile или ~ / .profile
# Экспорт ANDROID_SDK = <ваш путь SDK>
# Экспорт ANDROID_NDK = <ваш NDK путь>
# На Cygwin (не сопровождается)
# Установить мерзавец, сделать, Yasm
3. получить зависит от библиотеки с открытым исходным кодом
./init-android.sh
Получить FFmpeg другой armabi библиотеки,
Получить libyuv и libtouchsound Lib библиотеки:
Введение нескольких библиотек с открытым исходным кодом:
1. jni4android является JNI инструмент генерации, он может обеспечить Java - классы, автоматически генерировать соответствующий JNI слой * .c файлы * .h файлы заголовков.
2. SoundTouch является открытой библиотекой источника звука, в основном в следующих функциях:
Переменная скорость постоянной тон ( Мультиплексор TSM , шкала времени модификации ), изменение скорости аудио воспроизведения (быстро или медленно) , не затрагивая звуковой тон (Pitch) .
Тон не смещается высоты тона, , изменить звуковой тон при сохранении постоянной скорости воспроизведения аудио
передача тона, в то время как варьирование звуковых сигналов и скорости
3. libyuv является Google с открытым исходным кодом для достижения различных YUV в RGB преобразование, поворот, масштабирование между библиотеками. Это кросс-платформенный, доступна в ОС Windows , Linux , Mac , Android и других операционных систем, x86 , x64 , ARM скомпилирован для работы на архитектуре для поддержки SSE , AVX , NEON и другие SIMD инструкции для ускорения.
4. Компиляция Android FFmpeg библиотеки:
кд андроида / вно
./compile-ffmpeg.sh чистый
./compile-ffmpeg.sh все
FFmpeg Git репозиторий:
Различные armabi соответствующая FFmpeg библиотека:
FFmpeg сценарий сборки:
Компиляция libavfiter и других объектных файлов:
5. Обобщение IJK :
CD ..
./compile-ijk.sh все
По НДК скомпилирован ijkplayer каталог JNI папку
Пакет генерируется ijkffmpeg как SO .
Компиляция ijkplayer
6. Импорт AS (3.2):
Файл-> Открыть, нажмите кнопку Выбрать android-> ijkplayer
AS внимание конфигурации к проблеме:
1. Gradle версия переключателя. Вручную загрузить Gradle версию как gradle-4.6-all.zip в Gradle следующий файл.
2. Jcenter вопросы загрузки тайм - аут, замените Aliyun .
Два . IJK анализ кода:
IjkPlayer В дополнении к предоставлению ijkPlayer API , но и обеспечивает Android родной MediaPlayer и Google его ExoPlayer API . ijkPlayer в VideoView от игрока фабричной модели Создать
IjkDemo общей архитектуры:
Демонстрационное неиспользованный SDL нарисована, Android использование может означать:
https://github.com/wanliyang1990/SDL2ForAndroid
ijkplayer временная диаграмма воспроизведения:
./android/ijkplayer_jni.c
IjkMediaPlayer_native_setup
ijkplayer_android.c
ijkmp_android_create
ffpipeline_android.c
ffpipeline_create_from_android
Игрок основной блок-схема:
ffplay.c основного кода процедуры вызывающего , как показано ниже:
1. Данные чтения
stream_open главным образом сделать следующие вещи :
Создание сохраненного видео / аудио данных перед декодированием videoq / audioq
Создание сохраненное видео / аудио декодирует данные pictq / sampq
Создание данных чтения потоков read_thread
Создание видео - рендеринг нить video_refresh_thread
2. аудио и видео декодирования:
Выбор режима декодирования видео
При настройке ffp-> mediacodec , будет уделять приоритетное внимание, чтобы попытаться открыть аппаратные ×××, если вы не поддерживают аппаратное декодирование, Soft Solutions включена.
Video_thread / audio_thread .
3. аудио и видео рендеринга
Инициализация игрока , построить Vout объект: ijksdl -> S4a
MP-> ffplayer-> Vout = SDL_VoutAndroid_CreateForAndroidSurface ();
Звонки SDL_VoutDisplayYUVOverlay
рисовать
SDL_VoutDisplayYUVOverlay (ffp-> Vout, ВП> BMP);