欢迎来到天天文库
浏览记录
ID:31217244
大小:63.92 KB
页数:21页
时间:2019-01-07
《基于qt前端的mplayer播放器项目文档》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于QT前端的mplaycr播放器项目文档V1.0一、项目概述Mplayerc它支持大量的多媒体文件格式,像常见的咅频文件如mp3/wav/niid,常见的视频文件如avi/vcd/dvd/rm等等,各种视频编/解码方式也是应有尽有。我们项目的目标是在liunx下,用QT做一个MPlayer皮肤,能够实现播放器的常见功能,如:播放、停止、快进、快退、上/下一曲等。并把程序移植到ARM平台上。二、功能体验本节主要目的是让大家在学习具体实现过程前,先体验下播放器的功能。1、PC端功能体验将“项目代码工程代码”冃
2、录下的mplayer.tar.gz拷贝linux系统中(主机环境配置好以后,参照第四节的实现过程)。#larxvfzmplaye匚lar.gz#./mplayer2、目标平台功能体验1将“项目代码工程镜像”文件夹中的zlmage.rootfs.cramfs烧写到目标板(或者采用nfs方式)。分区情况为:Boot:0-40000size=0x40000Kernel:40000-240000size=0x200000Rootfs:240000-3740000size=0x3500000启动参数为:setenvr
3、oot=1f02init=/linuxrcrootfstype=cramfsconsole=ttySAC0,115200display二sam240setenvbootcmdsetenvbootcmdnandread3000800040000200000;go300080001启动系统后运行:#../Qtopia.sh#cdmymplayer#./mymplayer・qws三、实现原理先来考虑考虑如何为mpbyei•编写前端界面的问题。有两种思路,一种是把mplayer解剖,直接修改他里面的代码,这样我们做
4、得界面就能够和mplayer-体了(当然也能够通过linkmplayer用到的任何的库和.o文档,把他无缝的集成在程式里面);第二种方法就是mplayer所谓的slave模式。mplayer'/home/linux/1.mp3'-quiet-slave现在来探讨一下slave模式:所谓的slave模式,就是mplayer在运行过程中能够接收用户的输入命令彳亍,具体支持哪些命令行,能够通过mplayer・Mputcmdlist这条命令來得到,在Mplayer源码的slave.txt中也有对这些命令有详细的讲解。
5、Slave模式下工作的MplayernJ以和系统的标准输入、输出进行信息交互。我们可以用linuxC编程来完成对slave模式工作的Mplayer进行控制和信息获取。如:mkfifo('7tmp/fifo",0777);可以使用popen()來打开MplayerFILE*mp;mp=popenC4mplyer/home/linux/1.mp3-quiet-slave-inputfile二/tmp/fifo,''r'');可以通过管道/tmp/fifo给mplayer发送命令,通过mp获取mplay的返回数据如
6、:system(uecho"mute0”>/tmp/fifo'');//写命令fgets(buf,1000,mp);//读取mplay返回数据而Qt给我们提供了更方便的实现方法。通过定义一个QProcess对象调用已编译好的Mplayer□QProcess^process=newQProcess();process->setProcessChannelMode(QProcess::MergedChannels);Process->start(4tmplayer-acmadxxxxx");在命令屮添加-sl
7、ave和・quiet就可以通过命令设置Mplayer实现相应的功能。在mplayer源码中的,slave.txt中对这些命令有详细的讲解。Process->start(44mplayer-slave-quiet-acmadxxxxx'');1、暂停功能通过如下代码可以设置Mplayer暂停。process->write(t4pause");执行这段代码的吋候如果是播放状态就会暂停,暂停状态吋就会继续播放。2、获収播放文件的总时间和当前播放进度执行下面代码时,Mplayer将时间在标准输出显示。process-
8、>write(*'get_time_pos");process->write(Hget_time-length");通过如下代码即可读出我们需要的信息:connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()));process有对读取的信息时,发出信号,在槽函数back_message_slot
此文档下载收益归作者所有