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
安装成功后,再次编译即可
- Ubuntu下编译最新的ijkplayer(Android)及其常见的错误解决方案
- ubuntu下ijkplayer的编译
- Ubuntu 编译android常见错误(30种常见的)
- 常见的错误及其解决方案
- ubuntu下编译qt的常见错误
- ubuntu下编译qt的常见错误
- ijkplayer在android下的编译
- Ubuntu 14.04 下编译 ijkplayer Android
- 在ubuntu下编译ijkplayer-android
- 在ubuntu下编译ijkplayer-android
- DWR常见的错误及其解决方案
- 01 ijkplayer-android的编译
- 编译android用的ijkplayer
- android—ijkplayer的编译
- Ubuntu 12.10编译Android 4.0.3的常见错误
- ubuntu编译android源码会出的错误以及解决方案
- CocoPods 的最新安装教程及常见错误解决方案
- 处理网页图片最常见的十个错误及其解决方案
- php数组运用,用本身的value做key
- iOS/OS X内存管理(一):基本概念与原理
- APM之原理篇
- Android 启动 eclipse 错误:找不到元素‘d:devices'的声明
- 大数据医疗
- Ubuntu下编译最新的ijkplayer(Android)及其常见的错误解决方案
- C++学习模板篇之友元函数友元类
- 泸州NGN属南气矿工程----项目流程规范
- APM之实现篇
- 如何在内存中创建Solid
- mongo操作
- c语言入门之项目3.5——利用for循环输出一个三角形
- 关于移动端web字体
- C语言中利用setjmp和longjmp做异常处理