今天准备研究下 如何将rmvb格式的解码器porting到android 系统中。
经过分析以后 可行的方案 只有使用ffmpeg库还算靠谱。 写点东西 记录下攻关的过程。
1 要获得ffmpeg的源码 这个应该是今天的工作重点
具体步骤如下:
1
$ mkdir ~/GIT-REPOS/ffmpeg.git && cd ~/GIT-REPOS/ffmpeg.git
$ git clone git://source.ffmpeg.org/ffmpeg.git
$ mkdir ~/GIT-REPOS/ffmpeg-build && cd ~/GIT-REPOS/ffmpeg-build
$ ../ffmpeg.git/ffmpeg/configure --prefix=~/Programs/ffmpeg
$ make
$ make install
PS: 在执行 ../ffmpeg.git/ffmpeg/configure --prefix=~/Programs/ffmpeg 的时候 解决了一个yasm的安装 具体步骤记录一下
安装的是yasm-1.2.0.tar.gz( http://yasm.tortall.net/Download.html)
#tar xzvf yasm-1.2.0.tar.gz
#cd yasm-0.6.0
#./configure --prefix=/usr/local/yasm
#make
#make install
/*************that is ok here*********************/
#export PATH="$PATH:/usr/local/yasm/bin"
#vi /etc/profile
--[在最後,插入]—
export PATH="$PATH:/usr/local/yasm/bin"
/*************yasm end**************
export PATH="$PATH:/usr/local/yasm/bin"
/*************yasm end**************
执行完了 :
$ ./ffmpeg -version
ffmpeg version N-38704-g8e31dbc
built on Mar 10 2012 11:28:43 with gcc 4.4.5
configuration: --prefix='~/Programs/ffmpeg'
libavutil 51. 42.100 / 51. 42.100
libavcodec 54. 10.100 / 54. 10.100
libavformat 54. 2.100 / 54. 2.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 64.101 / 2. 64.101
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 7.100 / 0. 7.100
折腾了一顿 发现如果要porting到android 上需要 使用ndk 进行build..... 悲喜交加啊
发现了一个别人成功的案例 但愿能够提供有用的帮助 (git://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android.git)
这里要说一说 ndk的使用 没有安装 现下一个吧
首先 下一个ndk 然后 配置一下环境变量
$vim .bashrc
NDK_ROOT=/home/ndk。这里指你ndk的目录路径
export NDK_ROOT
至此 android ndk 编译环境已经ok了。 不过 我用的是 android-ndk-r7b 这个版本的编译选项需要设置 并且 编译选项的含义不清楚 所以 暂时到这卡住了。
接着鼓捣 突然发现 原来 从porting角度讲 ndk-build 不是必须的 。 完全可以在AOSP中进行编译。
心路历程啊 这个事情 一波三折 我已经换了3个角度了。
在资料中显示 rockplayer 根据LGPL协议公开了所使用的FFmpeg源码. 貌似又看到了曙光。
看着看着 设计到一个zlib的porting问题 还好 既然提出问题了 那我们就知道前进跟用工的方向了/ zlib是一个环境配置的问题
现在已经顺利的使用rockplayer的代码进行编译了。
不过报了一个 .ARM.exidx的 错误 还得继续分析
明天接着吧