引言

开发Android播放器已经有一段时间了,从一个对视频知识完全不了解,到后来能够开发独立播放器,经过了一段时间的学习。为了把学习经验留下来,特写此文章。在学习过程中,主要是通过阅读源码来了解程序的基本原理。本文是根据自己的一知半解,潦草成文,希望对大家有点帮助。本文程序大多来自开源代码,因此所以代码均开源。从开源中学习,回馈开源。本文源码都收集在虚拟机中,大家可以下载,裤兜播放器工程已经上传到google code中

 



 

 

第一节ffplay编译

 

 

ffplay的移植,我们首先学会编译ffplay的linux版本,了解其相关特性,我们这里选择debian作为开发环境。

 

1.      环境准备

 

建立虚拟机即可

登陆虚拟机,由于虚拟机上建立用户,方便我们使用,我们需要建立用户

使用root登陆(thoughtpolice镜像的root密码是: "thoughtpolice"),建立用户xdpan:


user addxdpan

su  -l  xdpan


 安装gcc编译环境


sudoapt-get  install build-essential

sudo apt-getinstall openssh-server


 环境已经安装完成

   

2.     编译sdl(Simple DirectMedia Layer)

         SDL(SimpleDirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

        

         ffplay的声音和图像输出,都是使用SDL库,目前SDL稳定版本是SDL-1.2.15,但是此版本不支持android平台。从SDL-1.3开始,就支持android的平台了,但是SDL-1.3以下版本差异较大。由于ffplay是基于老版本的SDL编写的,直接采用SDL-1.3以上版本ffplay是不能编译通过的。本次我们采用SDL-1.2.15进行编译。

cd/home/xpan/work
sudo apt-getinstall libdirectfb-dev
axel -n4http://www.libsdl.org/release/SDL-1.2.15.tar.gz
tar -xvfSDL-1.2.15.tar.gz 
./configure--prefix=/usr/local && make -j4 
sudo  make install
 
更新ldconfig,以便程序自动加载
 
sudo vim/etc/ld.so.conf.d/SDL.conf
 
添加/usr/local/lib 到 /etc/ld.so.conf.d/SDL.conf中
重新加载库
 
 sudo ldconfig         
 
 
 
3.      编译ffplay
由于ffplay移植已经有一段时间了,之前采用的ffmpeg版本是0.11.1,所以我们就采用0.11.1版本编译
由于ffmpeg中编解码器有汇编优化代码,所以需要汇编编译器。安装汇编编译器如下:
 
sudo apt-getinstall yasm
 
         下载编译ffmpeg
 
axel  -n4http://www.ffmpeg.org/releases/ffmpeg-0.11.1.tar.gz
tar -xvfffmpeg-0.11.1.tar.gz
cdffmpeg-0.11.1/
./configure  --prefix=/usr/local/  --enable-shared
make -j4
sudo makeinstall

查看/usr/local/bin/ffplay文件存在,编译完成

测试播放:


/usr/local/