完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一、音频播放
1、Linux下的音频播放实现 在嵌入式智能家居系统功能里面,有时需要使用音乐播放的功能,例如图片浏览时播放背景音乐,进行系统播报语音提示等,那么,在Linux下如何实现音频播放功能? (1) 实验设备:gec6818开发板一套,有线耳机一副。 (2) 软件资料:madplay播放器+MP3文件若干 2、实现步骤 (1) 检查开发板上的madplay播放器 ==> which madplay (2) 准备一些mp3素材文件 ==> 准备的音乐文件要求文件名不能有中文,mp3格式。 (3) 将mp3文件拷贝到开发板 ·把准备好的素材文件放在U盘下的music目录下 ·把U盘接到开发板 ·查看U盘是否挂载成功 ==> df -h ·在开发板上进入U盘挂载的路径 ==> cd /mnt/udisk ·把U盘下的music目录下的mp3文件全部拷贝到开发板的工作目录 ==> cp music/*.mp3 /SmartHome_Zj (拷贝到自己的工作路径) (4) 使用madplay 播放器播放音乐 ==> madplay 音乐文件名 ==> madplay faded.mp3 ==>练习:自己准备2~3首MP3,下载到开发板播放。 (5) 音乐播放控制 对于Linux下的madplay播放器的控制,经常会采用信号进行控制。 ==> linux下的信号: kill -l
练习:下载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,那就删除一些不需要的文件 2)移植mplayer到开发板 ==> U盘拷贝 3)使用mplayer播放视频 ==> ./mplayer Faded3.avi ==> ./mplayer -h 查看播放控制方法 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 5n” ; 快退10秒 “seek -10n” ==> quit 退出播放器 “quitn” ==> pause 暂停/继续 “pausen” ==> volume 音量调节 “volume 10n” “volume -10n” ==> mute 静音选项 “mute 1n” (静音) “mute 0n” (恢复) 设计一个视频播放器的功能界面 ==> 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 #include int mkfifo(const char *pathname, mode_t mode); ==> pathname : 管道文件的路径 ==> mode : 文件权限 0777 四、项目框架搭建 当前任务:参考smart_home.c , 完成智能家居框架设计。 1)设计项目功能界面 ·welcome.bmp ==> 800480的bmp , 2个按键 “登录”,“退出” ·main.bmp ==> 800480的bmp, “相册”,“音乐”,“视频”,“监控”,“家电” ·exit.bmp ==> 800*480的bmp 2)根据设计的界面,补充代码 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9000 浏览 16 评论
4051 浏览 18 评论
1109浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 13:14 , Processed in 0.978630 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号