文档章节

C语言控制mplayer

kangxin1234
 kangxin1234
发布于 2015/10/07 22:41
字数 425
阅读 426
收藏 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
程序员
私信 提问
Ubuntu Linux下Mplayer万能播放器的设置

sudo apt-get install mplayer-fonts mplayer mplayer-skins mozilla-mplayer linux 下mplayer 中文字幕配置 修改 ~/.mplayer/config # Write your default config options here! # 视频输出......

范堡
2009/05/08
1K
0
基于 QT 和 mplayer 的 MP4播放器设计

一、 环境搭建 1、开发环境 主机环境: ubuntu8.04 编译工具:gcc-4.2.4 界面工具:qt4 2、主机端安装 mplayer,将MPlayer-1.0rc2.tar.bz2、libmad-0.15.1b.tar.gz(1 个mp3 音频解码库)拷贝...

长平狐
2013/01/11
1K
0
Linux操作系统下安装Mplayer播放器方法

STEP 1. 下载必要的文件: 下载主程序: MPlayer-1.0pre8.tar.bz2 官方解码器: essential-20071007.tar.bz2 官方win32_CODES-all: windows-essential-20071007.zip 皮肤: Orange-1.3.tar......

JavaGG
2009/05/24
460
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

没有更多内容

加载失败,请刷新页面

加载更多

docker搞个wordpress

1.先把wordpress的镜像下载下来 docker pull wordpress 2.下载mysql docker pull mysql:lastest 3.启动mysql docker run --name blog -e root -d mysql:5.7 docker run --name some-mysql -e......

无极之岚
6分钟前
0
0
【宇润日常疯测-005】PHP 中的 clone 和 new 性能比较

clone和new本不应该放在一起比较,它们的作用是不同的。但可能有一些场景下,可以用clone也可以用new,那么这时候我们选哪个呢? 我编写了两个测试,第一个是声明一个空类,第二个是带构造方...

宇润
7分钟前
0
1
点击按钮弹出类似IOS 底部 dialog

implementation 'com.baoyz.actionsheet:library:1.1.7' 然后设置按钮点击监听,,调用下列代码即可 ActionSheet.createBuilder(this, getSupportFragmentManager()) ......

lanyu96
10分钟前
1
0
专访阿里云专有云马劲,一个理性的理想主义者

“我的故事都是和团队技术相关的,自己还真没有什么引人入胜的故事。”当马劲被问到能不能多分享些个人经历故事时他笑着说,我们就干脆怀着好奇聊了聊他和阿里云专有云一路走来的故事。 马劲...

阿里云官方博客
42分钟前
1
0
java环形缓冲区

import java.util.ArrayList;import java.util.List;/** * * 环形缓冲区<br/> * 一. 写数据:<br/> * 1. push: 当数据已写满时返回false,否则可以正常写入返回true<br/>......

whoisliang
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部