ijkplayer 编译 导入

        最近公司准备开发关于视频的应用,要支持很多格式 解码视频,准备使用谷歌官方播放器时候,发现很多编码格式支持不了,寻找开发app 推荐b站的开源项目ijkplayer项目,当时对比两个比较火热的播发器项目:
Vitamio:自用免费,商用收费,需要收费就排除了;
ijkplayer:B站开源的基于FFmpeg的轻量级 Android/iOS视频播放器,看博客很多人使用,遇到问题也好搜索查找
后面决定开始使用一些ijkplayer
使用IJKplayer
官网:https://github.com/Bilibili/ijkplayer
build.gradle添加下述依赖引用即可【其实 github 官网就有了】

Android:
Gradle
# required
allprojects {
    repositories {
        jcenter()
    }
}

dependencies {
    # required, enough for most devices.
    compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'

    # Other ABIs: optional
    compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'

    # ExoPlayer as IMediaPlayer: optional, experimental
    compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
}

下面编译ijkplayer so 动态库

步骤一 官网里面有提到设置bash 【当前前提是linux系统编译】 这点比较重要,之前unbutu 18.04 出现编译不了,通过设置,解决的
     执行 no[否]

sudo dpkg-reconfigure dash

ijkplayer 编译 导入_第1张图片

可以通过 ll /bin/sh 指令 是否转成bash

可以参考地址:https://blog.csdn.net/gatieme/article/details/52136411 大佬写的很详细

步骤二 搭载环境【已经搭好可以不要】

1.安装工具

sudo apt-get update
brew install git
brew install yasm

2.搭建 jdk sdk ndk环境
sudo vim /etc/profile
添加
export ANDROID_JDK=
export ANDROID_SDK=
export ANDROID_NDK=

下图是我当前的路径,可以参考下

ijkplayer 编译 导入_第2张图片

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export ANDROID_NDK=/home/fmc/work/android-ndk-r14b
export PATH=$ANDROID_NDK:$PATH
export ANDROID_SDK=/home/fmc/work/android-sdk-linux
export PATH=${PATH}:$ANDROID_SDK/tools:$PATH

添加完成后执行如下命令,让设置的环境变量生效
sudo source /etc/profile
测试环境变量是否已经设置好
执行如下命令
javac -version
ndk-build -v
出现下图信息,说明配置好了

ijkplayer 编译 导入_第3张图片

步骤三 编译ijkplay

1.下载ijkplayer-android源码
       git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
2.开始编译ijkplayer-android
      (1)代码拉完之后进入到ijkplayer-android目录
           cd ijkplayer-android
      (2)创建新的分支
           git checkout -B latest k0.8.4 
      (3)初始化,会从网上自动拉代码,时间比较长
           ./init-android.sh
          如果视频播放需要支持Https协议,需要执行如下命令
                  ./init-android-openssl.sh
                 编译各个平台的编译openssl
                 cd android/contrib
                 ./compile-openssl.sh clean
                 ./compile-openssl.sh all

ijkplayer 编译 导入_第4张图片

         (4)编译各个平台的ffmpeg,如果需要更多的编解码格式
             cd android/contrib
            ./compile-ffmepg.sh clean 
            编译各个cpu架构的ffmpeg
            ./compile-ffmpeg.sh all

ijkplayer 编译 导入_第5张图片

         (5)接下来,编译ijkplayer
              cd ..
             ./compile-ijk.sh all

ijkplayer 编译 导入_第6张图片

步骤四 导入源码

导入android 源码,使用studio File-New-Import project ./ijkplayer-android/android 目录下的 project ijkplayer导入就ok。

ijkplayer 编译 导入_第7张图片

这里可能会遇到一些警告 高版本studio 依赖写法不一样【implementation】
这里说一下错误:Error:All flavors must now belong to a named flavor dimension.Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
解决办法:【参考地址:https://www.jb51.net/article/127673.htm】
在主app的build.gradle里面的

defaultConfig {
 targetSdkVersion:***
minSdkVersion :***
versionCode:***
 versionName :***
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}

 

你可能感兴趣的:(android,应用开发)