五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天

音视频播放功能

一、音频播放

1、Linux下的音频播放实现

在嵌入式智能家居系统功能里面,有时需要使用音乐播放的功能,例如图片浏览时播放背景音乐,进行系统播报语音提示等,那么,在Linux下如何实现音频播放功能?
(1) 实验设备:gec6818开发板一套,有线耳机一副。
(2) 软件资料:madplay播放器+MP3文件若干

2、实现步骤

(1) 检查开发板上的madplay播放器
==> which madplay
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
(2) 准备一些mp3素材文件
==> 准备的音乐文件要求文件名不能有中文,mp3格式。

(3) 将mp3文件拷贝到开发板
·把准备好的素材文件放在U盘下的music目录下
·把U盘接到开发板
·查看U盘是否挂载成功 ==> df -h
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
·在开发板上进入U盘挂载的路径
==> cd /mnt/udisk

·把U盘下的music目录下的mp3文件全部拷贝到开发板的工作目录
==> cp music/*.mp3 /SmartHome_Zj (拷贝到自己的工作路径)
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
(4) 使用madplay 播放器播放音乐
==> madplay 音乐文件名
==> madplay faded.mp3

==>练习:自己准备2~3首MP3,下载到开发板播放。

(5) 音乐播放控制
对于Linux下的madplay播放器的控制,经常会采用信号进行控制。
==> linux下的信号: kill -l

  1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  2. SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  3. SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  4. SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  5. SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  6. SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  7. SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  8. SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  9. SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  10. SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  11. SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  12. SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  13. SIGRTMAX-1 64) SIGRTMAX
    ==>一共是62个信号 ==> 主要使用前面的1~31号的非实时信号
    ==> SIGKILL : 杀死进程 (不可被屏蔽的信号)
    ==> SIGSTOP : 暂停信号 (让进程进入暂停)
    ==> SIGCONT : 继续信号 (让进程解除暂停状态)

==》给madplay进程发送暂停信号: killall -SIGSTOP madplay

练习:下载music.c , 自行设计一张music.bmp , 设计 “播放”,”暂停”,”继续”, “结束”, “上一曲”, “下一曲” 功能按键,实现音乐播放的简单控制: 播放,暂停,继续,结束。

二、语音播报信息

在项目运行中,可以在适当的时候播报语音信息进行提示,例如:进入系统时提示“欢迎使用xxx智能家居”,退出时提示:“欢迎下次使用”
这些语音信息可以是固定的,只需要在本地准备这些语音文件,程序中进行播放即可。

文字转语言
==> 在线文字转语音
http://tools.bugscaner.com/tts/

任务:进入在线文字转语音网站,准备一些语音文件

在后面的项目中,如果需要在功能里面添加语音播报提示,就自行准备语音文件,烧写到开发板之后使用madplay进行播放

三、视频播放

在智能家居中的影音娱乐模块,除了音乐播放,还可以实现视频播放。
在Linux下实现视频播放,需要使用视频的解码播放器 mplayer

1、素材准备

1, mplayer : linux下视频解码播放器
2, 视频素材
==》 mp4, avi … ==》 建议使用avi格式视频

2、实现步骤

1) 检查开发板空间 ==> df -h ==> 如果空间少于50M,那就删除一些不需要的文件五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
2)移植mplayer到开发板 ==> U盘拷贝
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
3)使用mplayer播放视频

==> ./mplayer Faded3.avi
==> ./mplayer -h 查看播放控制方法
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
4)常用的播放命令
==> ./mplayer -slave -quiet -geometry 0:0 -zoom -x 800 -y 480 Faded3.avi
-slave : 采取从模式,播放时不再截取键盘控制,而是采用slave命令进行控制。
-quiet : 不再输出多余信息
-geometry 0:0 : 设置视频播放的起始位置 (0,0)
-zoom : 允许视频缩放
-x 800 -y 480 : 帧宽度,帧高度

==》使用这个播放命令,设置播放器的播放视频的大小和位置
例如:把视频Faded3.avi 在屏幕起点位置为(80,0),播放大小为640*480。

5)slave 命令
==> ./mplayer -input cmdlist
seek Float [Integer] // 快进,快退
==> 快进5秒 “seek 5\n” ; 快退10秒 “seek -10\n”

==> quit 退出播放器 “quit\n”
==> pause 暂停/继续 “pause\n”
==> volume 音量调节 “volume 10\n” “volume -10\n”
==> mute 静音选项 “mute 1\n” (静音) “mute 0\n” (恢复)

设计一个视频播放器的功能界面 ==> 800*480的bmp图片,可以参考 video.bmp

6)设计程序实现视频播放控制

==》Linux下的管道通信
==》要使用管道控制mplayer播放器播放状态,那么需要在播放时添加 管道参数
./mplayer -slave -quiet -input file=/tmp/myfifo -geometry 0:0 -zoom -x 800 -y 480 Faded3.avi

linux下创建管道文件 ==> mkfifo()
#include <sys/types.h>
#include <sys/stat.h>

int mkfifo(const char *pathname, mode_t mode);
==> pathname : 管道文件的路径
==> mode : 文件权限 0777

四、项目框架搭建

当前任务:参考smart_home.c , 完成智能家居框架设计。

1)设计项目功能界面
·welcome.bmp ==> 800480的bmp , 2个按键 “登录”,“退出”
·main.bmp ==> 800
480的bmp, “相册”,“音乐”,“视频”,“监控”,“家电”
·exit.bmp ==> 800*480的bmp

2)根据设计的界面,补充代码
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天
五天完成项目-《基于Linux环境下的Cortex A53的手势识别智能家居》-第四天

上一篇:【Shell脚本】Linux进程间通信机制之信号


下一篇:Linux 信号列表