文档章节

C语言控制mplayer

kangxin1234
 kangxin1234
发布于 2015/10/07 22:41
字数 425
阅读 411
收藏 9
点赞 0
评论 0

    最近使用树莓派的音频播放音频文件(需要外接声卡),自己在网上找一些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
粉丝 37
博文 38
码字总数 35417
作品 0
程序员
基于 FUSE 的 Bittorrent 文件系统

Bittorrent 已经存在了很长时间,它可以从互联网上共享和下载数据。市场上有大量的 GUI 和 CLI 的 Bittorrent 客户端。有时,你不能坐下来等待你的下载完成。你可能想要立即观看内容。这就是...

16% ⋅ 06/08 ⋅ 0

CentOS 7安装KVM虚拟机OpenSUSE42操作实录

准备工作: 硬件配置情况: Intel NUC i3主机: CPU: Intel® Core™ i3-6100U CPU @ 2.30GHz × 4 内存:4G 硬盘:300G 网卡:一个,单网口,DHCP连接家庭上网的Switch,Swtich WAN口连接外...

xc95144 ⋅ 05/06 ⋅ 0

GMLive 0.22 发布

Lerosua 于昨日发布了 GMLive 0.22 的正式版本。GMLive 0.22 包含以下更新: 添加音频控制 (嵌入模式下控制 MPlayer) 添加音画同步调整 (仍是嵌入模式下控制 MPlayer) 修正全屏恢复大小不可调...

红薯 ⋅ 2009/08/23 ⋅ 0

求在终端里控制mplayer视频输出位置及大小?

求在终端里控制mplayer视频输出位置及大小? 比如 mplayer /home/test.avi 这里能不能加参数去控制视频在桌面上显示的位置及尺寸呢?如何要修改源码请问在哪修改。...

dream2012 ⋅ 2013/09/27 ⋅ 1

Mediaplayer控制声音开关

需求是要控制当前媒体播放的声音开关,而不是更改整个系统的声音模式。 1、获取mediaplayer实例mPlayer 2、设置音量 mPlayer.setVolume(1.0f, 1.0f);//设置成系统当前的音量 mPlayer.setVol...

Carbenson ⋅ 2016/06/24 ⋅ 0

Ubuntu Linux下Mplayer万能播放器的设置

linux 下mplayer 中文字幕配置 修改 ~/.mplayer/config Write your default config options here! 视频输出以xv模式,启用视频加速 vo=xv 字幕字体文件 font = /usr/share/fonts/zh_CN/True...

范堡 ⋅ 2009/05/08 ⋅ 0

多媒体API--libplayer

libplayer是一个多媒体的A / V抽象层的API。其目的是互动的Enna 媒体中心。 libplayer提供了一个通用的A / V的API,各种多媒体播放器的Linux系统依赖。它目前支持MPlayer的,xine的,可变长编...

匿名 ⋅ 2009/12/07 ⋅ 0

DIY 多媒体播放:Qt + MPlayer 的故事。

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

晨曦之光 ⋅ 2012/02/17 ⋅ 0

MPlayer WW编译版

MPlayer WW编译版简介: 继承了KK版MPlayer的所有功能,包括Windows下的简单GUI、自动连续播放等。(感谢KK提供的patch源代码) 增加了OpenGL驱动,可以兼容Vista的Aero特效,并且在高性能显卡下...

匿名 ⋅ 2009/04/17 ⋅ 0

请教mplayer 音量控制的代码在哪些文件里面

各位大神,小弟不才,移植mplayer1.1到ARM9上没声音,而且控制音量时候总是提示volume 0% 想研究mplayer代码,发现其结构太庞大,至今还找不到音量控制层的代码。 如果大神对这方面有了解而不...

FieldThomas ⋅ 2012/08/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 35分钟前 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

Confluence 6 从其他备份中恢复数据

一般来说,Confluence 数据库可以从 Administration Console 或者 Confluence Setup Wizard 中进行恢复。 如果你在恢复压缩的 XML 备份的时候遇到了问题,你还是可以对整个站点进行恢复的,如...

honeymose ⋅ 昨天 ⋅ 0

myeclipse10 快速搭建spring boot开发环境(入门)

1.创建一个maven的web项目 注意上面标红的部分记得选上 2.创建的maven目录结构,有缺失的目录可以自己建立目录补充 补充后 这时候一个maven的web项目创建完成 3.配置pom.xml配置文件 <proje...

小海bug ⋅ 昨天 ⋅ 0

nginx.conf

=========================================================================== nginx.conf =========================================================================== user nobody; #......

A__17 ⋅ 昨天 ⋅ 0

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 昨天 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部