文档章节

C语言控制mplayer

kangxin1234
 kangxin1234
发布于 2015/10/07 22:41
字数 425
阅读 416
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

这些Spring中的设计模式,你都知道吗?

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。 Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行...

Java填坑之路
32分钟前
1
0
Spring Aop原理之Advisor过滤

在上文(Spring Aop之Advisor解析)中我们讲到,Spring Aop对目标bean的代理主要分为三个步骤:获取所有的Advisor,过滤当前bean可应用的Advisor和使用Advisor为当前bean生成代理对象,并且上文...

爱宝贝丶
42分钟前
0
0
JMockit学习教程

1 JMockit中文网 我觉得如果仅仅是开发自测的话,把JMockit中文网认真看一遍,就可以在项目中使用JMockit了。 http://jmockit.cn/index.htm 2 JMockit中文教程 官方文档中文版。对于不喜欢看...

SuperHeroes
54分钟前
0
0
Linux服务器几乎从不采用Arch Linux?

我们见得多的Linux服务器系统一般都是什么Ubuntu Server啊,什么Cent OS啊,什么Fedora啊,或者企业采用的Red Hat啊,为什么几乎没有Arch Linux呢?下面我将从若干个方面指出Arch Linux在服务...

linux-tao
今天
0
0
js 函数柯里化 闭包

参考 https://mp.weixin.qq.com/s/GEHL3jarDdAAcr5tQGjmDg 一个统计求和的函数 需要知道整个数组的信息,然后遍历求值 function countMoney() { let money = 0 // 温馨提示:arguments...

阿豪boy
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部