Mplayer播放器的在PC、arm平台上的移植
一、 环境介绍:
主机:ubuntu 12.04
开发板:kernel2.6.35.7
交叉编译器:4.4.1
二、 编译PC版的mplayer
方法一:命令安装
sudo apt-get install mplayer
方法二:ubuntu 软件中心(ubuntu software center ) 安装
Step1:打开软件中心,搜索mplayer
Step2:选中搜索到的结果,点击安装
方法三:编译安装
Step1:到mplayer官网下载mplayer源码包
http://www.mplayerhq.hu/design7/news.html
Step2:安装mplayer编译环境
#sudo apt-get build-dep mplayer
build-dep参数是指:根据源码编译时所需的关系包进行搜索并下载安装。
Step3:配置
#./configure
或#./configure --enable-gui --language=zh_CN
Step4:编译
#make
Step5:安装
#make install
三、 编译ARM版的mplayer
#tar zxzf MPlayer-1.1.tar.gz
#cd MPlayer-1.1
#./configure --host-cc=gcc --cc=arm-linux-gcc --target=armv7l --enable-static --disable-win32dll --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --language=zh_CN
#make //会在当前文件下生成mplayer可执行程序
Mplayer实验
实验原理:
Mplayer播放器是一款可以播放音乐和视频的播放器,有两种控制模式:键盘模式和slave模式:
实验步骤:
1:键盘控制模式
在终端上启动Mplayer
# . /mplayer -ac mad /home/britney_spears.avi (改为自己的路径)
全屏:
# . /mplayer -ac mad -vf scale=800:480 /home/britney_spears.avi
启动Mplayer后可以通过键盘按键来控制Mplayer播放
基本控制键:
left or right 向后/向前搜索10秒
up or down 向后/向前搜索1分钟
pageup or pagedown 向后/向前搜索10分钟
p or SPACE 暂停播放(按任意键继续)
q or ESC 停止播放并推出
2:Slave模式:
可以通过给Mplayer发送命令的方法来控制Mplayer。
启动方法一:在终端下敲命令来启动Mplayer
# . /mplayer_arm -ac mad -slave -quiet /home/britney_spears.avi
1:-ac mad 这两个参数的意思是指定用mad解码器。
2:-slave 指定Mplayer运行在slave模式下。
3:-quiet 指定Mplayer不向屏幕上,打印乱码信息。
4:/home/britney_spears.avi 指定Mplayer播放的第一首歌曲的路径。
在终端下敲这个命令的时候,Mplayer默认从标准输入去获取命令。 可以在终端下敲命令控制Mplayer。比如:#pause //暂停命令
Mplayer 在slave模式下常用的命令:
loadfile string //播放string指定的歌曲
//string为歌曲名字(例:“loadfile ../easylove.mp3”)
volume x 1 //设置音量,x为音量的大小。
mute 1/0 //静音开关
pause //暂停/取消暂停
seek value //向前查找到文件的位置播放 参数value为秒数。
get_percent_pos //返回文件的百分比(0--100)
get_time_pos //打印出在文件的当前位置用秒表示,采用浮点数
get_file_name //打印出当前文件名
get_time_length //返回值是播放文件的长度,以秒为单位。
get_meta_album //打印出当前文件的'专辑'的元数据
get_meta_artist //打印出当前文件的'艺术家'的元数据
get_meta_comment //打印出当前文件的'评论'的元数据
get_meta_genre //打印出当前文件的'流派'的元数据
get_meta_title //打印出当前文件的'标题'的元数据
get_meta_year //打印出当前文件的'年份'的元数据
启动方法二:在进程中调用exec启动Mplayer程序。
例:
execl("./mplayer_arm",
"mplayer", "-ac", "mad",
"-slave", "-quiet",
"-input", "file=./fifo_cmd",
"./media/sad_or_happy.mp3", NULL);
参数:
1:"-ac", "mad"
指定使用mad解码器。
2:"-slave"
MPlayer 从标准输入读取以新行 (\n) 分隔开的命令行。
3:"-quiet"
使得控制台输出消息较少。
4:"-intput", "file=./tmp/cmd_fifo"
Mplayer 通过命名管道”./tmp/cmd_fifo”获取命令。
5:song_path_name
歌曲的路径+文件名首地址。
6:NULL
Mplayer可以通过它来判断到底有多少个参数,这个必不可少。
3:移植ARM版本的Mplayer
参考Mplayer播放器的在PC、ARM平台上的移植
把生成的mplayer可执行程序重命名为mplayer_arm
测试ARM版本Mplayer,在终端中输入以下命令
# . /mplayer_arm -ac mad /home/britney_spears.avi (改为自己的路径)
如果能够播放视频说明Mplayer移植成功。
4:程序框架
注意:
主进程写命名管道的时候,比如”pause\n” 字符串命令,写入的字节数一个不能多一个不能少,需要用strlen()函数去测一下长度再写,否则命令会发送错误。