基于qt的嵌入式多媒体播放系统内容摘要:
交流 PC 端环境的搭建 主机环境 :CentOS 交叉编译工具: 主机编译工具: 本小结主要是介绍如何在 CentOS 环境中搭建 Qt开发环境, 将 Qt_S 软件包拷贝到 CentOS 双击即可开始安装。 点击 next,选择 custom 安装如图 6所示,选择所需的开发工具,如图 7 所示,接着点击下一步即可, 直到 安装完成。 12 图 6选择 自定义 安装方 式 图 7 开发工具的选择 现在让我 们熟悉我们所要开发的开发环境 : 上面的 qtopia 编译安装完成后,会在咱们前面创建的 target 目录下生成很 多开发工具。 先看一下供主机端使用的工具 [root@localhost bin] pwd /home/linux/Qtopia/target/qtopiacore/host/bin [root@localhost bin]ls assistant linguist lupdate qmake rcc uic designer lrelease moc qvfb templates uic3 13 如果系统以前有其它 qt 开发工具,把环境变量修改一下,保证它们不要和我们这几个工具冲突。 下面可以试一下你的 designer 了。 ./designer mplayer 项目工程的建立与开发 好像其他 开发环境一样, Qt 的项目也需要建立相关的工程。 mplayer 工程的建立 打开 Qt creator,单击 File,选择 New File or Project 如图 8, 新建 工程目录为 /home /linux /mplayer, 然后 选择 相应的 模板,选择 Qt 控件项目 选项,创建一个 Qt Gui 应用,如图 9所示 图 8 Qt工程的建立 14 图 9 选择要建立的应用类型 然后选择工程的名称及所建立的工程目录如图 10 所示: 图 10 选择工程名称 15 选择下一步如图 11 所示: 图 11包含的 Qt工具版本号 这时会弹出一个让我们设置相关文件类型的对话框,将所有的文件名称改为我们所需要的文件名如 图 12所示: 图 12 工程的内容及类名 确认我们所建立的文件如图 13 所示的内容一致: 16 图 13 工程建立后所产生的文件 好了, 我们的工程已经建立,但是我们要采用界面,所以我们还所需一些必 要的资源文件,现在我们进行如下操作,将我们所需的文件拷贝到我们工程目录下,以备我们后面所需: cd /home/linux/mplayer/ mkdir images mkdir movies cd /root/Desktop cp /home/linux/mplayer/movies/ cp /home/linux/mplayer/movies/ cp *.png /home/linux/mplayer/images 进行以上操作后,我们将一些 png 格式 的图片和一部影片以及一首 mp3 拷贝到了工程目录的 images、 movies 目录下。 我们 的 工程建立 和一些所备资源文件业已准备 完毕,然而还缺一步,我们需要按钮的资源文件,右击鼠标,选择 Add New„ 如图 14 所示 17 图 14 添加资源文件 选择我们所要的文件类型 ( Qt Resource file) 如图 15 所示: 图 15 选择要添加的文件类型及资源文件 18 命名所要的资源文件名称及所要存放的路径,如图 16 所示: 图 16 资源文件名及存放的路径 确认资源文件的正确性如图 17 所示: 图 17 资源文件产生 的文件 19 添加资源文件中的内容,首先我们要点击 Add 在选择 Add Prefix 添加前缀后,选择 Add Files 添加我们所要的文件如图 18所示: 图 18添加前缀并添加文件 选择所要添加的文件路径所在,然后选择打开,添加所要的文件如图 19所示: 图 19所要添加的文件 文件添加成功后,会如图 21 所示: 20 图 21 文件添加后资源文件所包含的内容 mplayer 实现原理 先来考虑考虑如何为 mplayer 编写前端界面的问题。 有两种思路,一种是把mplayer 解剖,直接修改他里面的代码,这 样我们做得界面就能够和 mplayer 一体了(当然也能够通过 link mplayer 用到的任何的库和 .o文档,把他无缝的集成在程式里面);第二种方法就是 mplayer 所谓的 slave 模式。 mplayer/home/linux/ – quiet slave 现在来探讨一下 slave 模式:所谓的 slave 模式,就是 mplayer 在运行过程中能够接收用户的输入命令行,具体支持哪些命令行,能够通过 mplayer input cmdlist 这条命令来得到,在 Mplayer 源码的 中也 有对这些命令有详细的讲解。 Slave 模式下工作的 Mplayer 可以和系统的标准输入、输出进行信息交互。 我们可以用 linux C 编程来完成对 slave 模式工作的 Mplayer进行控制和信息获取。 如: mkfifo(“/tmp/fifo”,0777)。 可以使用 popen()来打开 Mplayer FILE* mp。 mp=popen(“mplyer /home/linux/ quiet – slave – input 21 file=/tmp/fifo” ,”r”)。 可以通过管道 /tmp/fifo 给 mplayer发送命令,通过 mp获取 mplay 的返回数据 如: system(“echo \”mute 0\” /tmp/fifo”)。 //写命令 fgets(buf,1000,mp)。 //读取 mplay 返回数据 而 Qt 给我们提供了更方便的实现方法。 通过定义一个 QProcess 对象调用已编译好的 Mplayer。 QProcess *process = new QProcess()。 processsetProcessChannelMode(QProcess::MergedChannels)。 Processstart(“mplayer – ac mad xxxxx”)。 在命令中添加 slave 和 quiet 就可以通过命令设置 Mplayer 实现相应的功能。 在 mplayer 源码中的, 中对这些命令有详细的讲解。 Processstart(“mplayer – slave – quiet – ac mad xxxxx”)。 ( 1) 暂停功能 通过如下代码可以设置 Mplayer 暂停。 processwrite(“pause\n”)。 执行这段代码的时候如果是播放状态就会暂停,暂 停状态时就会继续播放。 ( 2)获取播放文件的总时间和当前播放进度 执行下面代码时, Mplayer 将时间在标准输出显示。 processwrite(get_time_pos\n)。 processwrite(get_time_length\n)。 通过如下代码即可读出我们需要的信息: connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()))。 process 有可读取的信息时,发出信号, 在槽函数 back_message_slots()中读取信息。 void MPlayer::back_message_slots() { while(processcanReadLine()) { QString message(processreadLine())。 //message 即为读取的信息,我们可以根据需要取我们要的信息如 22 //文件总时间为: ANS_LENGTH= //当前时间为: ANS_TIME_POSITION= } } (3)快进功能 seek value [type] Seek to some place in the movie. 0 is a relative seek of +/ value seconds (default). 1 is a seek to value % in the movie. 2 is a seek to an absolute position of value seconds. 下面代码即可实现快进功能: processwrite(“ seek ** 1\n” )。 ( 4) 音量调节 volume value [abs] Increase/decrease volume or set it to value if [abs] is nonzero. 下面代码即可实现快进功能: Processwrite(“ volume 1\n” )。 //音量减小 Processwrite(“ volume +1\n” )。 //音量增加 ( 5)静音功能 mute [value] Toggle sound output muting or set it to [value] when [value] = 0 (1 == on, 0 == off). 下面代码即可实现快进功能: processwrite(mute 0\n)。 //开启静音 processwrite(mute 1\n)。 //关闭静音 (6) 定位视频窗口 通过上面的代码基本功能实现了,可是播放视频的时候发现又弹出一个窗口。 并没有出现在我们的窗口里。 如下代码即可时间窗口的定位。 QString mon = mplayer slave quiet ac mad zoom movie/ + file_name + wid + QString::number(widgetwinId())。 processstart(mon)。 红色部分实现窗口的定位。 Widget 是一个 QWidget 对象。 通过 winId 可23 以获得一个数字, wid 既将视频输出定位到 widget 窗体部件中。 注意: wid 参数只在 X1 directX 和 OpenGL 中适用。 mplayer 界面 UI 搭建 利 用 前 面 安 装 的 designer 搭建 UI 界 面 , 并 将 其 保 存 在/home/linux/mplayer/ 界面搭建效果如图 22。 图 22 mplayer界面搭建效果 mplayer 代码编写 在 /home/linux/mplayer/下创建 、 、 、。 其中 为主函数; 为 mplayer 播放器的主程序代码,实现播放器的各项功能; 为 的头文 件,其中包括 中各个函数以及变量声明; 为资源文件,中间包括mplayer 界面设计的界面元素相关链接信息。 代码如下: 24 include QApplication include int main(int argc, char **argv) { QApplication app(argc, argv)。 MPlayer player。 ()。 return ()。 } 代码请查看附录 代码如下: RCC qresource prefix=images fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file fileimages//file /qresource /RCC 代码如下: ifndef _MPLAYER_H define _MPLAYER_H include QIcon 25 include QProcess include QTimer include QStringList include QDir include QTime include QString include cla。基于qt的嵌入式多媒体播放系统
相关推荐
大。 Arm2440 开发板的价格也是可以接受的,且有用户指导手册,便宜开发,易于使用。 本 应用 使用 Qt 开发, Qt 具有良好的可靠性、可用性、可编程性与易用性。 它 有优良的跨平台特性 , Qt支持 Microsoft Windows 95/9 Microsoft Windows NT、 Linux、 Solaris、 SunOS、 HPUX、 Digital UNIX 、 Irix、
1) 显示所有记事本文件列表: 当文件数量多于一屏的时候,出现纵向滚动条。 可以按方向键,向下或向上选择文件。 选择的文件是列表中的第一个文件时,按方向键的向上键时,显示列表的最后一个文件。 选择的文件是列表中的最后一个文件时,按方向键的向下键时,显示列表的第一个文件。 即列表条目可循环显示。 ( 2) 记事本文件的保 存格式为 txt文件,即后缀名为 .txt 或 .TXT.
数字图像处理。 计算机的发明以后,人们开始着重研究怎么样让计算机的功能更强大更加具有实用性,随着岁月的流逝,很多科学家为了计算机的发展奉献了自己的一生。 计算机的飞速发展给图像处理带来了飞速的发展。 人类为什么要研究科学。 无疑是为了让我们的生活更加滋润,让我们活在我们所设想过的梦幻里。 这样我们舒舒服服的享受生活,幸福快乐地过着人生。 数字图像处理技术无处不在。 只不过我们习惯了没注意而已。
球 等 一些大家熟悉的软件, Qt 发展前景很好,也非常容易入手,做出自己喜欢的软件。 在 开发上 可以降低成本,有很广的 市场 发展前景。 ( 1)跨平台特性,避免重复造车轮 写一次源代码,能在不同的系统平台下编译,这个功能很强大,目前,还没有什么软件与它相比。 有人说 flex build 可以跨平台,那么,二者效率不可同日而语, Qt 的效率还是不错的。 北京邮电大学毕业设计 6 使用
绘图工具 matplot 只能将原始无压缩音乐的波形画出来。 会议主持人: 记 录 人: 年 月 日 N 答 辩 小 组 意 见 评语: 评定等级: 负责人(签名): 年 月 日 系 学 位 委 员 会 意 见 评语: 论文(设计)最终评定等级: 负责人(签名): 系部(公章) 年 月 日 校 学 位 委 员 会 意 见 评语: 评定等级: 负责人(签名): 年 月 日 I 目 录 绪论 ...
出非告警的器件。 ( 5) 64 位激光 ROM 每一 DS18B20 包括一个唯一的 64 位长的 ROM 编码。 开始的 8 位是单线产品系列编码( DS18B20编码是 10h)。 接着的 48位是唯一的系列号。 最后的 8位是开始 56位 CRC (见图 28)。 64 位 ROM 和 ROM 操作控制部分允许 DS18B20 作为一个单线器件工作并且