引言
开发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/