C語言控制mplayer

    最近使用樹莓派的音頻播放音頻文件(須要外接聲卡),本身在網上找一些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可能會用到的:ui

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

指定播放的聲卡設備。code

card 1, device 0:
開發

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

aplay -l 查看聲卡設備。
string

➜  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開源軟件

設置指定聲卡的音量,it

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

1:是指聲卡 編號 - - 1 aplay -l 能看到。
class

」Speaker「 這個名字能夠在alsamixer中看到。0不知道是啥意思。

相關文章
相關標籤/搜索