0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux驱动开发_mplayer播放器开发

DS小龙哥-嵌入式技术 ? 2022-09-17 15:50 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【摘要】 介绍mplayer播放器的安装、使用、以及两个模式的使用;然后介绍广告机项目的要求,实现办法。

USB wifi (360) : 如何从官网下载源码进行代码移植、安装相关无线工具、让嵌入式设备支持WIFI。

任务1: 安装mplayer播放器并学习使用方法

图片格式、音乐文件(.mp3)、视频文件(mp4)…….

学习文件编程: bmp图片格式、JPG(jpeglib)。

视频编码解码: ffmpeg库。

Mplayer播放器: 源码开源,可以下载、可以更改….。 (X11)

??安装libmad库方法

1.?在linux系统目录下创建libmad文件夹: mkdir /work/libmad -p

2.?将libmad源码解压到 /work/libmad目录下:

[root@wbyq libmad-0.15.1b]# tar xvf /mnt/hgfs/linux-share-dir/libmad-0.15.1b.tar.gz

3.?配置源码,生成Makefile文件

[root@wbyq libmad-0.15.1b]# ./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-debugging --prefix=$PWD/_install

4.?将Makefile文件第129行的-fforce-mem选项去掉

5.?编译安装

[root@wbyq libmad-0.15.1b]# make && make install

6.?将生成的.so文件拷贝到开发板的lib目录下。

??安装mplayer播放器

1.?在/work目录下创建一个mplayer文件夹

2.?将源码解压到mplayer目录下

3.?配置mplayer源码生成Makefile文件

./configure --prefix=$PWD/_install --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-cross-compile --enable-mad --disable-gui --disable-menu --disable-x11 --yasm="" --extra-cflags=-I/work/libmad/libmad-0.15.1b/_install/include/ --extra-ldflags=-L/work/libmad/libmad-0.15.1b/_install/lib/

4.?编译源码: make

编译成功之后会在当前目录下生成mplayer可执行文件,将该可执行文件拷贝到开发板根文件系统的/bin目录下即可。

5.?播放测试

[root@tiny4412 ]#mplayer -zoom -x 800 -y 480 /work/video_file/Video_2018-12-11.wmv

??Mplayer播放器使用方式:

1.?主模式,运行mplayer播放器,播放器将占用当前的终端,在主模式下mplayer程序不能后台运行。

默认从键盘上(表示输入)获取输入信号对播放器进行控制。

2.?从模式: 将mplayer播放器当做子进程启动,父进程可以通过管道与子进程之间进行通信

进程间通信: 无名管道/命名管道(FIFO)、消息队列、内存映射(mmap)、内存共享、信号。

创建子进程的函数: fork函数。

??声卡驱动使用

poYBAGMlOkCAIYeaAABno-3CUrE385.png

将该压缩包拷贝到开发板根文件系统目录下,解码,运行声卡启动脚本。

??在开发板上解压: [root@tiny4412 ]#tar xvf /mnt/Tiny4412_SoundCard_wm8960.tar -C /work/

pYYBAGMlOkCAYhI7AAEPRQG1JvE182.pngpoYBAGMlOkGAHWq8AAC1jseZF64269.png

将耳机插在开发板的音频输出口上即可听到声音了。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

/*
获取标准输入的数据、写给FIFO文件
*/
void *pthread_func(void *argv)
{
	int fd=open("/mplayer_fifo",2);
	if(fd<0)
	{
		printf("FIFO文件打开失败!\n");
		pthread_exit(NULL); //结束当前线程
	}
	char buff[100];
	int len;
	while(1)
	{
		printf("请输入命令:");
		fflush(stdin);  	   //刷新缓冲区
		fgets(buff,100,stdin); //从键盘上获取数据  get_percent_pos  get_file_name
		len=strlen(buff); 	   // get_file_name [0~12] [13]='\n'
		write(fd,buff,len);    // get_file_name '\n'
		memset(buff,0,100);
	}
}

int main(int argc,char **argv)
{
	int pid;
	
	/*1. 创建无名管道*/
	int fds[2];
	pipe(fds);
	
	/*2. 创建子进程*/
	pid=fork();
	
	/*子进程代码: mplayer播放器*/
	if(pid==0)
	{
		/*将子进程的标准输出重定向到管道写端*/
		dup2(fds[1],1);
		
		/*启动子进程*/
		execlp("mplayer","mplayer","-zoom","-x","800","-y","480","-slave","-quiet","-input","file=/mplayer_fifo","/work/video_file/Video_2018-12-11.wmv",NULL);
	}
	else /*父进程*/
	{
		char buff[100];
		int cnt=0;
		
		/*创建新的线程: 从键盘上获取输入的数据,写给播放器的FIFO文件*/
		pthread_t threadID;
		pthread_create(&threadID,NULL,pthread_func,NULL);
		pthread_detach(threadID); //设置分离属性
		
		while(1)
		{
			/*从管道的读端读取数据: 读取就是mplayer播放器输出的数据*/
			cnt=read(fds[0],buff,100);
			buff[cnt]='\0';
			printf("播放器输出的值=%s\n",buff);
		}
	}
	return 0;
}

任务2:制作视频广告机

广告机应用场景: 公交站台、地铁车厢、银行前台大厅、高速公路、公园….

1.?有些广告机只有视频播放,没有声音。

2.?广告机都支持网络视频文件更新---->文件更新使用现成的服务器: FTP服务器、NFS服务器。

(1)?如何判断服务器上那些文件需要下载到本地? 通过shell脚本代码或者使用C语言

(2)?更新的时间一般是固定的: 20:00 23:00 …… 通过时间函数判断时间是否到达。

(3)?在视频问好更新的时候,视频文件需要停止播放,可以在屏幕上显示提示(正在更新…..)。

3.?广告机需要支持自动播放,播放一个自动切换下一个、循环播放。

调用读目录、循环遍历目录、得到视频文件、mplayer播放器需要使用子进程方式启动。

广告机: 音量调整、选择视频播放…….都不是广告机的功能---是视频播放器的功能。

pYYBAGMlOkGANZoJAABwGfwDIe4315.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 播放器
    +关注

    关注

    5

    文章

    412

    浏览量

    38116
  • Linux
    +关注

    关注

    87

    文章

    11522

    浏览量

    214382
  • 广告机
    +关注

    关注

    1

    文章

    165

    浏览量

    10054
  • mplayer
    +关注

    关注

    0

    文章

    6

    浏览量

    2634
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Made with KiCad(135):Echo - 开源的音乐播放器

    “? Echo 是一个开源硬件平台,专为音乐播放器设计。该项目的目标是开发一款基于开源软件并采用开源设计的高品质音乐播放器。 ” ? Made with KiCad 系列将支持新的展示方式。直接将以
    的头像 发表于 07-16 11:17 ?1875次阅读
    Made with KiCad(135):Echo - 开源的音乐<b class='flag-5'>播放器</b>

    Made with KiCad:Tangara 便携式音乐播放器

    不同,Tangara 还配备了全彩显示屏、内置电池以及单手触控交互界面,为开发者提供更完整的硬件支持。 现代技术加持的高品质音频体验 Tangara 首先是一款音频播放器,其核心功能设计均围绕这一本质展开
    发表于 04-16 14:01

    硬核升级!华清远见STM32MP157驱动开发课程助力嵌入式Linux底层开发入门进阶

    在嵌入式Linux系统开发中,驱动程序开发是一项关键技术,它作为硬件与软件之间的桥梁,实现了操作系统对硬件设备的控制。相较于嵌入式Linux
    的头像 发表于 04-03 16:40 ?451次阅读
    硬核升级!华清远见STM32MP157<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>课程助力嵌入式<b class='flag-5'>Linux</b>底层<b class='flag-5'>开发</b>入门进阶

    BEM在移动端开发中的应用案例

    实时视频播放器项目 在移动端开发中,实时视频播放器是一个常见的功能组件。通过BEM规范,可以为视频播放器的各个部分进行清晰的命名和组织。例如: Block : .live-play
    的头像 发表于 02-12 17:13 ?540次阅读

    迅为RK3568开发驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 ?2933次阅读
    迅为RK3568<b class='flag-5'>开发</b>板<b class='flag-5'>驱动</b>指南<b class='flag-5'>Linux</b>中通用SPI设备<b class='flag-5'>驱动</b>

    毕业设计竞赛选题推荐 | 嵌入式Linux应用之音乐播放器项目实战(含文档及源码)

    提升了效率和心情。嵌入式Linux开发的音乐播放器,凭借其高效能与低能耗的特点,在便携设备、智能家电以及车载系统等领域中展现出独特的优势。它不仅能够提供高品质的音乐
    的头像 发表于 12-23 16:50 ?995次阅读
    毕业设计竞赛选题推荐 | 嵌入式<b class='flag-5'>Linux</b>应用之音乐<b class='flag-5'>播放器</b>项目实战(含文档及源码)

    瑞芯微主板/开发Linux系统播放音频方法,触觉智能RK3562开发板演示

    本文介绍瑞芯微方案主板/开发Linux系统播放音频的方法,触觉智能RK3562开发板演示,通用RK3566、RK3568、RK3588等
    的头像 发表于 12-13 11:40 ?1003次阅读
    瑞芯微主板/<b class='flag-5'>开发</b>板<b class='flag-5'>Linux</b>系统<b class='flag-5'>播放</b>音频方法,触觉智能RK3562<b class='flag-5'>开发</b>板演示

    海贝R1便携音乐播放器开箱

    作为一个爱听音乐打发时间的玩家,我已经习惯随身携带一款小巧轻便的音乐播放器,从早期的CD播放器到现在的数码播放器,它总能在不经意间中给我带来简单的快乐。不管是逛街等人的时候,还是工作压力大的时候
    的头像 发表于 12-09 09:40 ?1036次阅读
    海贝R1便携音乐<b class='flag-5'>播放器</b>开箱

    变速播放器1和2的区别

    关于变速播放器1和2的区别,由于这里并未明确指出“变速播放器1”和“变速播放器2”具体指的是哪两款软件,因此我无法提供这两款特定软件之间的对比。不过,我可以从一般意义上探讨变速播放器
    的头像 发表于 10-14 09:48 ?721次阅读

    为什么好的播放器还要配解码

    好的播放器之所以需要配备解码,是因为音频和视频文件的编码和解码是一个复杂的过程,涉及到多种技术和标准。解码的作用是将压缩的音频和视频数据还原成可以被播放设备识别和
    的头像 发表于 09-23 18:02 ?3443次阅读

    数字播放器和解码

    数字播放器和解码的组合能够提供更优质的音频体验。数字播放器负责处理和传输音频数据,而解码则负责将这些数据转换为高质量的模拟信号。它们的配合可以确保你听到的音频既清晰又真实。
    的头像 发表于 09-06 17:35 ?2332次阅读
    数字<b class='flag-5'>播放器</b>和解码<b class='flag-5'>器</b>

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式
    的头像 发表于 09-02 09:11 ?1312次阅读

    linux开发板与树莓派的区别

    操作系统的微型计算机,主要用于教育、编程、媒体播放等领域。 硬件配置 Linux开发板:Linux开发板的硬件配置因厂商和型号而异,通常包括
    的头像 发表于 08-30 15:34 ?2041次阅读

    linux开发板和单片机开发的区别

    硬件架构 Linux开发板和单片机开发在硬件架构上有很大的区别。Linux开发板通常基于ARM、x86或其他处理
    的头像 发表于 08-30 15:30 ?2226次阅读

    Linux 驱动开发与应用开发,你知道多少?

    一、Linux驱动开发与应用开发的区别开发层次不同:Linux
    的头像 发表于 08-30 12:16 ?1670次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>驱动</b><b class='flag-5'>开发</b>与应用<b class='flag-5'>开发</b>,你知道多少?