Ubuntu下编译最新的ijkplayer(Android)及其常见的错误解决方案

来源:互联网 发布:js判断对象是否有值 编辑:程序博客网 时间:2024/04/29 15:11

ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。是B站开源项目之一。

github地址:https://github.com/bbcallen/ijkplayer

 

本文采用的编译环境是 Ubuntu14.04, 64位

 

1.准备工作

安装git使用命令 :sudo apt-getinstall git

安装g++使用命令:   sudoapt-get install g++ 

安装Android NDK r9d,地址:http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2(国内上不去,你懂得)

安装Android SDK 23

执行命令:sudo dpkg-reconfigure dash,弹出对话框,选择No。

主文件夹下 按Ctrl+H 显示隐藏的文件,然后打开.bashrc 文件,在文件最后几行添加:

export ANDROID_NDK="/home/lifq/android-ndk-r9d/"
export ANDROID_SDK="/home/lifq/android-sdk-linux/"
export PATH=$PATH:$ANDROID_NDK:ANDROID_SDK:

其中:"/home/lifq/android-ndk-r9d/" 和 "/home/lifq/android-sdk-linux/"为自己解压的ndk和sdk的目录

2.检出代码

1)将git上的代码克隆到ijkplayer-android文件夹下

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android

2)进入克隆的文件夹

cd ijkplayer-android

3)切换分支

git checkout -B latest k0.4.5

4)执行命令

./init-android.sh

3.开始编译

1)进入目录

cd android/contrib

2)编译ffmpeg 执行命令

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

3)返回上一层目录

cd ..

4)编译ijkplayer 执行命令

./compile-ijk.sh all

4.常见错误分析:

1.You need the NDKr9 or later 

解决:查看自己配置的环境变量的位置  参考1准备工作 

检查自己的NDK版本

2.执行./init-android.sh报错

error: unknown option `dissociate'

用法:git clone [选项] [--] <版本库> [<路径>]

    -v, --verbose         更加详细
      -q, --quiet           更加安静
      --progress           强制显示进度报告
    -n, --no-checkout     不创建一个检出
    --bare               创建一个裸版本库
    --mirror              创建一个镜像版本库(也是裸版本库)
      -l, --local           从本地版本库克隆
    --no-hardlinks        不使用本地硬链接,始终复制
    -s, --shared          设置为共享版本库
      --recursive           在克隆时初始化子模组
      --recurse-submodules  在克隆时初始化子模组
      --template <模板目录>
                         模板目录将被使用
    --reference <版本库>  参考版本库
      -o, --origin <名称>   使用<名称>而不是 'origin' 去跟踪上游
    -b, --branch <分支>   检出<分支>而不是远程HEAD
  -u, --upload-pack <路径>
                         远程 git-upload-pack 路径
      --depth <深度>       创建一个指定深度的浅克隆
      --single-branch       只克隆一个分支、HEAD 或 --branch
    --separate-git-dir <git目录>
                         git目录和工作区分离
    -c, --config <key=value>
                         在新版本库中设置配置信息

解决方案:

打开/ijkplayer-android/tools下的pull-repo-ref.sh文件:

将 “ --dissociate ” 删掉

REMOTE_REPO=$1LOCAL_WORKSPACE=$2REF_REPO=$3if [ -z $1 -o -z $2 -o -z $3 ]; then    echo "invalid call pull-repo.sh '$1' '$2' '$3'"elif [ ! -d $LOCAL_WORKSPACE ]; then    git clone--dissociate --reference $REF_REPO $REMOTE_REPO $LOCAL_WORKSPACE#将--dissociate删掉    cd$LOCAL_WORKSPACE    git repack -aelse    cd $LOCAL_WORKSPACE    git fetch --all --tags    cd -fi#! /usr/bin/env bash

然后保存文件,再次执行./init-android.sh 接着继续进行......

或者升级git到最新版本,其中会支持“dissociate”命令


3.ffmpeg yasm not found, use --disable-yasm for a crippled build

解决方案:在终端输入 

sudo apt-get install yasm

安装成功后,再次编译即可


 


1 0
原创粉丝点击