【Linux】基于Mplayer开源多媒体库的音视频播放器

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部分指令:

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库的使用
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值