基于alsa的音量控制代码
http://www.alsa-project.org/alsa-doc/alsa-lib/group___simple_mixer.html
ALSA库接口说明文档
基于alsa的音量控制代码
[php]
//头文件
#include <alsa/asoundlib.h>
//类定义
class Sound {
public:
Sound();
~Sound();
int sound_read();
void sound_write(int);
private:
snd_mixer_t * mixer;
snd_mixer_elem_t *pcm_element;
};
//初始化-----------------------------------------------------
Sound::Sound()
{
snd_mixer_open(&mixer, 0);
snd_mixer_attach(mixer, "default");
snd_mixer_selem_register(mixer, NULL, NULL);
snd_mixer_load(mixer);
//找到Pcm对应的element,方法比较笨拙
pcm_element = snd_mixer_first_elem(mixer);
pcm_element = snd_mixer_elem_next(pcm_element);
pcm_element = snd_mixer_elem_next(pcm_element);
//
long int a, b;
long alsa_min_vol, alsa_max_vol;
///处理alsa1.0之前的bug,之后的可略去该部分代码
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT, &a);
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT, &b);
snd_mixer_selem_get_playback_volume_range(pcm_element,
&alsa_min_vol,
&alsa_max_vol);
///设定音量范围
snd_mixer_selem_set_playback_volume_range(pcm_element, 0, 100);
}
//读音量值-----------------------------------------------------
int Sound::sound_read()
{
long ll, lr;
//处理事件
snd_mixer_handle_events(mixer);
//左声道
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT, &ll);
//右声道
snd_mixer_selem_get_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT, &lr);
return (ll + lr) >> 1;
}
//写入音量-----------------------------------------------------
void Sound::sound_write(int leftright)
{
//左音量
snd_mixer_selem_set_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_LEFT,
leftright);
//右音量
snd_mixer_selem_set_playback_volume(pcm_element,
SND_MIXER_SCHN_FRONT_RIGHT,
leftright);
}
//退出-----------------------------------------------------
Sound::~Sound()
{
snd_mixer_close(mixer);
}
[/php]
编译时要加库: -lasound
以上代码参考了xmms
基于alsa的音量控制代码相关推荐
- 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制
基于QMediaPlayer的简易视频播放器 1.创建基本布局 2.QMediaPlayer的基本使用 3.结合QSlider实现播放进度控制和音量控制 4.重载QSlider鼠标响应事件,实现单击跳 ...
- 基于jQuery可悬停控制图片轮播代码
基于jQuery可悬停控制图片轮播代码.这是一款可悬停切换全屏轮播jQuery幻灯片.效果图如下: 在线预览 源码下载 实现的代码: <!-- 轮播广告 --><div id= ...
- 玩转树莓派---详解树莓派的系统烧录,基础使用及基于树莓派制作手势控制的小车(附详细代码及演示效果)
目录 一.写在前面 二.系统实现: Author:qyan.li Date:2022.6.10 Topic:详解树莓派的使用及基于树莓派制作手势控制的小车 Reference:如何给树莓派安装操作系统 ...
- 基于arduino的串口控制数码管(5611AH)显示数字(初学,入门级附代码)
基于arduino的串口控制数码管(5611AH)显示数字只有干货 首先先要介绍一下数码管了,这里图片为5611AH,这种数码管主要分为共阴极和共阳极两种,这里用的是共阴极的. 注意区分 话不多说,直 ...
- 符号执行android,基于符号执行的android原生代码控制流图提取方法symbolic.pdf
基于符号执行的android原生代码控制流图提取方法symbolic 第3 卷第7 期 网络与信息安全学报 Vol.3 No.7 2017 年7 月 Chinese Journal of Networ ...
- ffplay 控制音量的代码实现
ffplay音频音量控制的代码 主要分享一下音量控制部分的代码实现 一.音量的大小调整函数 1.在void event_loop(VideoState *cur_stream) 这个事件循环函数下, ...
- ALSA声卡12_从零编写之添加音量控制_学习笔记
1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_ ...
- python写安卓app控制蓝牙_基于python实现蓝牙通信代码实例
这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...
- 基于alsa和libmad嵌入式mp3播放器
可移植ok6410 的mp3播放器,基于alsa和libmad库,内含编译好的库和播放器以及源代码,解压后可直接运行,和以移植好的mplayer官方播放器(可快进 暂停 时间轴 音量控制等) 源码及移 ...
最新文章
- 03-编写dao实现类方式
- 【干货】Sketch+Keynote双剑合璧:5步快速制作移动动效
- spark.kubernetes.file.upload.path的作用
- MMDetection的调试笔记
- shell实现ftp命令示例
- HTML编辑器-Bluefish 2.0.1 发布
- mysql反思范文_MySQL学习笔记(一)
- 设置Mysql数据库的默认编码为utf8
- IAR3.11.1 搭建 STM8S003 模板工程
- C++编程验证费马小定律
- 五、数组、字符串以及冒泡排序--附代码案例
- 如何在JavaScript中对对象数组进行排序
- java优化编程 第2版_Java优化编程(第2版)林胜利、王坤茹 pdf
- ESP32任务看门狗实践
- 多线程爬取4k超高清美图壁纸
- 【EPS精品教程】EPS2016三维测图软件常用快捷键(建议收藏)
- 用threading+turtle画哆啦A梦,同时播放背景音乐
- 监控视频压缩2—Block-Composed Background Reference for High Efficiency Video Coding
- DBC 格式分析解读
- 自动驾驶出租车远程遥控驾驶研究
热门文章
- 源码包nginx 配置php,源码安装Nginx和PHP
- python使用局部敏感性哈希算法,在海量数据中查询相似序列
- 上传docker到阿里云镜像仓库
- php反序列化总结与学习
- postman接口测试:获取信息
- [HNOI2007] 分裂游戏
- jquery获取div/div之间的内容.text() 和 .html()区别
- Python的Request请求跳过认证及禁用警告
- quartz集群报错but has failed to stop it. This is very likely to create a memory leak.
- Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 ....