相信很多使用ijkplayer的朋友,都在埋怨,不少issue没有人去解,master上分支已经停留在201801月,这如今一年都快过去了,官方不维护了么?其实,人家一直在维护和更新。只不过ijkplayer是基于FFmpeg做为内核。上层ijkplayer封装的东西,改动性没有那么大,出问题,也都是在底层FFmpeg改。如Demux,Codec等,还有各类协议。android
因此,我告诉你们如何用ijkplayer内核最新稳定版本。咱们必定对它的工程结构了解,他们是怎么把FFmpeg,libyuv,soundtouch,等第三方库做为contrib的。ios
IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_COMMIT=ff3.4--ijk0.8.7--20180103--001
IJK_FFMPEG_LOCAL_REPO=extra/ffmpeg
set -e
TOOLS=tools
git --version
echo "== pull ffmpeg base =="
sh $TOOLS/pull-repo-base.sh $IJK_FFMPEG_UPSTREAM $IJK_FFMPEG_LOCAL_REPO
function pull_fork()
{
echo "== pull ffmpeg fork $1 =="
sh $TOOLS/pull-repo-ref.sh $IJK_FFMPEG_FORK android/contrib/ffmpeg-$1 ${IJK_FFMPEG_LOCAL_REPO}
cd android/contrib/ffmpeg-$1
git checkout ${IJK_FFMPEG_COMMIT} -B ijkplayer
cd -
}
复制代码
这里master上依赖的库是ff3.4--ijk0.8.7--20180103--001
,是基于FFmpeg3.4的,新版本FFmpeg的都是4.1了,同时修复了不少问题和一些新的Feature。git
ijkplayer的维护者,也是一直在勤快的更新。github
因此要改动,只须要把IJK_FFMPEG_COMMIT=ff3.4--ijk0.8.7--20180103--001换成JK_FFMPEG_COMMIT=ff4.0--ijk0.8.25--20181123--001就能够,而后再作验证性测试。bash
对于iOS也是,在init-ios.sh中微信
IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_COMMIT=ff3.4--ijk0.8.7--20180103--001
IJK_FFMPEG_LOCAL_REPO=extra/ffmpeg
IJK_GASP_UPSTREAM=https://github.com/Bilibili/gas-preprocessor.git
# gas-preprocessor backup
# https://github.com/Bilibili/gas-preprocessor.git
if [ "$IJK_FFMPEG_REPO_URL" != "" ]; then
IJK_FFMPEG_UPSTREAM=$IJK_FFMPEG_REPO_URL
IJK_FFMPEG_FORK=$IJK_FFMPEG_REPO_URL
fi
if [ "$IJK_GASP_REPO_URL" != "" ]; then
IJK_GASP_UPSTREAM=$IJK_GASP_REPO_URL
fi
set -e
TOOLS=tools
复制代码
也是改法和上面相同。其余第三方库libyuv,soundtouch,修改对应脚本就行。须要注意的是,编译时,若是有一些新旧接口变化,能够用对比工具对比下。升级的好处,能够规避不少问题。你们有兴趣能够试试。工具