KKPlayer — это видео-плеер, основанный на ffmpeg, который был перенесён на платформы Windows и Android.
Желаем активной обратной связи в нашей QQ-группе: 342276504
Для Windows версия была успешно скомпилирована с помощью Visual Studio 2008. Для Android версия была успешно скомпилирована с помощью Android Studio 1.5.
Проект состоит из следующих частей:
Для компиляции Windows версии требуется определение следующих переменных окружения:
Ссылки для скачивания:
Примеры установки переменных окружения:
KKWinDx9Path=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)
KKWinSdkPath=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A
KKSoui2Path=D:\work\Projects\soui
При компиляции проекта следует соблюдать следующий порядок:
libmfx -> zlibstat -> png -> skia -> sdl -> render -> kkplayercore -> kkui -> jsoncpp -> kkplayer
Для управления задержками RTMP потока используйте следующую конфигурацию librtmp
: rtmp:xxxxxxxxxxxxxxxxxxxxxx
.
Необходимо добавить следующие объявления функций в файл avcodec.h
:
int av_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt);
int av_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags);
```Реализация этих функций должна быть выполнена в файле `utils.c`:
```c
int av_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt) {
return ff_get_format(avctx, fmt);
}
int av_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) {
return ff_get_buffer(avctx, frame, flags);
}
Для успешной компиляции FFmpeg версии 3.0 и выше на Android, если использовать незаполненные конфигурационные файлы, то полученный .so
файл будет иметь имя типа libavcodec.so.55.39.101
, где номер версии указан после имени файла. Это может вызвать проблемы при загрузке на Android устройствах.Поэтому следует заменить следующие строки в файле configure
:
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
на:
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
Шаблон скрипта bash:
#!/bin/bash
export TMPDIR=/home/ubuntu64/FFmpeg/Tmep
NDK=/home/ubuntu64/FFmpeg/android-ndk-r10
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one {
./configure \
--prefix=/home/ubuntu64/FFmpeg/ff3.1.2Jni \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--disable-encoders \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
--enable-protocol=rtmp \
$ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
# windowVc(Vs2010) компилирование ffmpeg (https://ffmpeg.org/platform.html#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows)
# 3.3: ./configure строки 3580 изменены на:
if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
cc_default="cl"
else
cc_default="c99wrap cl"
fi
cc_default="c99wrap cl"
# Пример (включить shared библиотеки, отключить все кодеки):
# 3.4: ./configure строки 3774 изменены на:
cl_major_ver=$(cl 2>&1 | sed -n 's/. *Version \([[:digit:]]\{1,\}\)\. . */\1/p')
if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
cc_default="cl"
cxx_default="cl"
else
cc_default="c99wrap cl"
cxx_default="c99wrap cl"
fi
cc_default="c99wrap cl"
cxx_default="c99wrap cl"
./configure --toolchain=msvc --extra-cflags='-IC:/msinttypes' --prefix='./ffmpegBin' --incdir='./ffmpegBin/incdir' --enable-shared --disable-doc --disable-programs --disable-ffplay --disable-ffprobe --disable-ffserver
```Обновление лога:
2017-5-23
Удаление srslibrtmpplugin. Добавление librtmpplugin
Поддержка разделённого видео (как в Youku)
Интеграция FFmpeg mediacode декодера. Декодирование видео в формате intermediate h264
Обновление ffmpeg до версии 3.3.2
2017-5-30
Добавлено использование библиотеки libkkplayer в Windows. Поддержка рендера без окон duis, а также рендера с использованием окна.
Изменено создание нескольких одновременно работающих аудиорендеров через SDL1.
Устранены некоторые ошибки рендера.
2017-7-14
Библиотека libkkplayer в Windows была модифицирована, добавлены новые интерфейсы.
Оптимизация рендера D3D9 4K, исправлена декодировка QSV 265.
Добавлены новые интерфейсы в Android.
2017-10-20
Исправлены небольшие ошибки в графическом интерфейсе Windows.
2017-11-29
Используется новая версия API ffmpeg для декодирования аудио и видео.
Библиотека ffmpeg обновлена до версии 3.4.
Создан новый раздел библиотеки kkplayer версии 1.1.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )