1 项目概况
本次项目是基于Linux环境的交叉编译arm-linux-gcc,在GEC6818arm开发板上运行,创建多条链表分别存储遍历到当前目录下子目录中的音乐、视频和图片文件名,通过读取触摸设备文件的点击事件进行判断,选择对相册切换以及音视频的快进/快退、上下首切换、音量调节、进度条调节等功能
2 项目需求
(1)制作播放器 (基本要求)
利用触摸屏实现音量的调节 快进快退的调节 进度条(可以通过进度条控制视频的播放位置)
控制功能:
//调用system命令 播放视频
system(“mplayer -slave -quiet -input file=/pipe -geometry 0:0 -zoom -x 800 -y 380 mn.avi”);
//打开指定管道文件
fd=open(/pipe)
//写入控制命令到管道中
write(fd, "pause\n",strlen("pause\n"));
---------------------------
system("echo pause > /pipe");
//如何获取mplayer输出的数据
dup2() ->文件重定向
(2)预览效果 (强化)
获取系统中的所有视频文件,把他的预览图显示到桌面中, (把预览图与视频路径关联起来,到链表中),
提供用户选择
//获取一帧图像的命令
mplayer -ss 84 -noframedrop -nosound -vo jpeg -frames 1 xx.rmvb
-ss 获取那一秒
预览图:
1.遍历目录搜索视频文件 (.avi (不要太大,因为硬盘只有500M))
2.找到视频文件后 调用mplayer -ss 84 -noframedrop -nosound -vo jpeg -frames 1 xx.rmvb 命令生成图片
(直接生成一张100*100的小图命令如下:)
mplayer -zoom -x 100 -y 100 -ss 99 -noframedrop -nosound -vo jpeg -frames 1 Faded3.avi
3.把该图片显示到 屏幕中 (要对图片进行缩放 100 100)
//多进程 ,多线程 , 进程间的管道通信, 注意:保护共享资源
3 搭建环境
开发环境:
Linux
开发工具:
arm-linux-gcc、Notepad++
其他工具:
mplayer开源多媒体库、jpeglib库、font库
描述:
通过开源代码编译器notepad++编写代码,利用arm-linux-gcc交叉编译,再通过LINUX平台的SSH服务器将编译生成的程序文件传输到开发板中,最后执行。
移植mplayer开源多媒体库:
MPlayer是一款开源的多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix作业系统、微软的视窗系统及苹果电脑的Mac OS X系统。MPlayer是建基于命令行界面,在各作业系统可选择安装不同的图形界面。
因为linux下都是命令行的操作方式,所以对mplayer的各种操作都是用命令来实现的,这次主要用的是它的slave工作方式(在slave模式下,MPlayer为后台运行其他程序,不再截获键盘事件, MPlayer会从标准输入读一个换行符(\n)分隔开的命令)。
Mplayer部分指令:
Mplayer部分程序代码指令:
write(fd,"volume +5\n",strlen("volume +5\n"));//加声音
write(fd,"volume -5\n",strlen("volume -5\n"));//减声音
write(fd,"seek -5\n",strlen("seek -5\n"));//快退。
write(fd,"seek +5\n",strlen("seek -5\n"));//快进。
write(fd,"pause\n",strlen("pause\n"));//暂停播放
write(fd,"seek 100 1\n",strlen("seek 100 1\n"));//停止播放
write(fd,"seek 100 1\n",strlen("seek 100 1\n"));//进度跳转
封装JPEGLIB库和font库:
通过移植封装jpeglib库和font库,可以使6816开发板显示出JPEG图片和自定义字体。
4 技术描述
基本
- C语言
- 文件IO(遍历目录,读写文件)
- 链表(创建多个双向循环链表存取歌曲、图片、电影名)
核心
- 系统编程(进/线程的创建、通信)
- Mplayer指令的运用(重定向、音量、进度调节、暂停/播放)
- 触摸屏(点击事件、滑屏处理)
- font库的使用