开源项目ijkplayer使用FFmpeg视频编码SDL显示的编译使用

本人编译中遇到各种奇葩问题 再次做个记录 和分享

环境: 我是在win7-64位上 用Oracle VMVirtualBox虚拟机 安装Ubuntu1204 来编译 

编译开始:1.为了方便 我在Ubuntu和win7直接共享一个文件夹 用samba服务 
sudo apt-get install samba smbfs smbclient system-config-samba 在线安装软件
sudo service smbd restart 启动软件 这一步只为方便
2. 安装NDK并配环境变量 
建议用windows下载 复制到Ubuntu下解压tar xf android-ndk-r9b-linux-x86.tar.bz2 Ubuntu下载太慢 http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86.tar.bz2
设置ANDROID_NDK环境变量,并添加PATH环境变量中。
$HOME/.bashrc文件,在最后面添加如下代码
export ANDROID_NDK=~/Demo/android-ndk-r9b 
export PATH=$PATH:$ANDROID_NDK
3.下载ijkplayer 
需要Git 所以首先自然是准备好 git,若未装可通过命令 sudo apt-get install git 安装。
确保已安装 g++,未安装请执行 sudo apt-get install g++ 来安装。
然后找一个目录存放 ijkplayer 的代码仓库。如果想使用稳定分支的 ijkplayer,执行:
git clone https://github.com/bbcallen/ijkplayer.git ijkplayer-android-master
cd ijkplayer-android-master
git checkout master
下载ijkplayer
4.ubuntu 的 shell 默认是 dash,这里我们必须改为 bash,否则执行编译脚本时会有很多莫名其妙的问题:
sudo dpkg-reconfigure dash
它会问你是否使用 dash 作为系统缺省 shell,在这里当然是选 <否>/No
5.开始编译ijkplayer 
1. 进到你下载的目录ijkplayer-android-master下
cd ijkplayer-android-master
执行init-android.sh脚本,脚本的主要作用是下载ffmpeg源码。
sh init-android.sh

执行完成后,下载好的ffmpeg源码会放到android/ffmpeg-armv7a目录。下载 ffmpeg 和 android-libyuv 依赖包,其中由于 ffmpeg 仓库在国外,故需要等待较长时间 然后
2. cd 到刚下载的ijkplayer-android-master目录

再 cd android目录 
执行 sh compile-ffmpeg.sh armv7a 
这一步就是我报错: "You need the NDKr9 or later" 说我版本太低 可我的版本就是NDKr9啊 此时我想应该是ANDROID_NDK环境变量的问题吧 于是就 执行source .bashrc 各种试 还是不行 于是我转向研究脚本语言 compile-ffmpeg.sh这个脚本 会执行do-compile-openssl.sh这个脚本 在这个脚本里我找到了


# try to detect NDK version
FF_NDK_REL=$(grep -o '^r[0-9]*.*' $ANDROID_NDK/RELEASE.TXT 2>/dev/null|cut -b2-)
case "$FF_NDK_REL" in
9*|10*)
# we don't use 4.4.3 because it doesn't handle threads correctly.
if test -d ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.8
# if gcc 4.8 is present, it's there for all the archs (x86, mips, arm)
then
echo "NDKr$FF_NDK_REL detected"
else
echo "You need the NDKr9 or later"
exit 1
fi
;;
7|8|*)
echo "You need the NDKr9 or later"
exit 1
;;
esac
看到没这个是检测版本的 如果是ndkr9一下会输出"You need the NDKr9 or later" 还有这句话 if test -d ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.8 句话是检测 你ndk中arm-linux-androideabi-4.8是否存在并是文件夹 不是也很输出"You need the NDKr9 or later"
那么问题来了 我的NDK版本就是NDKr9 难道是arm-linux-androideabi-4.8文件没有? 我进入{ANDROID_NDK}/toolchains/arm-linux-androideabi-4.8是有的 呀 啊 崩溃了 什么问题呢 难道是权限问题 我有把NDK所以的文件 sudo chmod -R 777 可还是报版本太低 此时我整个人都不好了! 休息了一会 找个同事来一起看 :我们在文件管理器里直接 输入路径$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8 提示不存在 我们 echo输出 echo $ANDROID_NDK 环境变量 发现路径和配置的不一样 这时 我们注销Ubuntu用户 再启动 再执行 sh compile-ffmpeg.sh armv7a 好了 此时我想说FUCK!居然好了 
最后我总结是:Linux系统是每个用户都会对应自己环境变量 有可能是搞混了 我注销用户再启动好了!TM的浪费好长时间 
3. 进入android目录下,执行compile-ffmpeg.sh脚本即可完成ffmpeg的编译
cd android

sh compile-ffmpeg.sh
然后,在执行compile-ijk.sh脚本,完成ijk部分的编译。
sh compile-ijk.sh
编译后会生成如下的文件:



6.最后将编译好的so包 放到ijkmediaplayer下的libs下的armeabi-v7a目录下
然后 在eclipse中导入ijkmediademo ijkmediaplayer ijkmediawidget

运行ijkmediademo就可以播放视频了!
效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值