文档章节

C语言控制mplayer

kangxin1234
 kangxin1234
发布于 2015/10/07 22:41
字数 425
阅读 424
收藏 9

    最近使用树莓派的音频播放音频文件(需要外接声卡),自己在网上找一些alsa编程的代码用起来比较复杂,可以是自己设置的原因把,播放时有时会出现杂音。不过这两天看到了一个开源软件mplayer,它的slave模式,可以让你在通过FIFO文件控制它的播放停止和其他功能。这样你就可以通过程序控制mplayer了,甚至可以在它的基础上开发新的软件。这里用的是C语言。今天先立个搞,明天再更。

    

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#define FIFO "/tmp/myfifo"

int main()
{
	char * path = "./test.mp3";
	if(mkfifo("/tmp/myfifo",0777))
		printf("fifo create error\n");

	

	if(!fork())
	{
		system("mplayer -slave -quiet -input file=/tmp/myfifo ./test.mp3");
		exit(0);
	}
	else
	{
		sleep(10);
		int fd = open(FIFO, O_WRONLY);
		write(fd, "pause\n",strlen("pause\n"));
		close(fd);
	}

	printf("end!\n");
	
	return 0;
}

很多需求下非阻塞open可能会用到的:

int fd = open(FIFO, O_WRONLY|O_NONBLOCK);

指定播放的声卡设备。

card 1, device 0:

mplayer -ao alsa:device=hw=1.0 test.mp3

aplay -l 查看声卡设备。

➜  music aplay -l                    
**** PLAYBACK 硬體裝置清單 ****
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
  子设备: 1/1
  子设备 #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  子设备: 1/1
  子设备 #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
  子设备: 0/1
  子设备 #0: subdevice #0

设置指定声卡的音量,

amixer -c 1 sset "Speaker",0 60%

1:是指声卡 编号 - - 1 aplay -l 能看到。

”Speaker“ 这个名字可以在alsamixer中看到。0不知道是啥意思。


© 著作权归作者所有

共有 人打赏支持
kangxin1234
粉丝 38
博文 51
码字总数 35417
作品 0
程序员
DIY 多媒体播放:Qt + MPlayer 的故事。

本文的主角是Linux下的万能播放器:MPlayer 因 为MPlayer是开源的,所以倍受开发者爱戴。下载MPlayer-1.0rc2.tar.bz2到Linux中,依次 configure,make,make install后,就可以在linux下使用...

晨曦之光
2012/02/17
0
0
Centos6.2 安装 mplayer

07年的文章,自行匹配最新版本。 1下载安装mplayer需要的各种软件 去这里下载http://www.mplayerhq.hu/MPlayer/ MPlayer-1.0rc1.tar.bz2 (MPlayer-1.0rc2.tar.bz2 这个版本在make的 时候会有...

LiShixi
2012/04/05
0
0
Opensuse中如何安装Mplayer播放器

Mplayer是很强大的开源的播放器,适合linux 平台,Windows平台,甚至支持 mac osx 访问 http://www.mplayerhq.hu/design7/dload.html 可以获得安装文件。 官方推荐自行编译以获得较佳的性能体...

yahalala
2012/02/06
0
1
MPlayer播放器移植到嵌入式系统

开发板:tq2440 arm-linux-gcc交叉编译器:gcc version 4.3.3(Sourcery G++ Lite 2008q3-72) MPlayer版本: MPlayer-1.0rc2.tar.bz2 准备源码包: MPlayer-1.0rc2.tar.bz2 libmad-0.15.1b.ta......

慎思
2012/08/24
0
0
centos 安装视频播放器mplayer

centos 桌面安装mplayer播放器看视频 今天安装上centos 6.3 的 桌面环境来搭配 java开发环境。 完事之后,发现centos6.3 桌面程序应用中的 电视播放器 无法播放AVI 等视频(原来都是命令行)...

lzw_me
2014/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
47
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
41
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
45
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
40
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
47
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部