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的音量控制代码相关推荐

  1. 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制

    基于QMediaPlayer的简易视频播放器 1.创建基本布局 2.QMediaPlayer的基本使用 3.结合QSlider实现播放进度控制和音量控制 4.重载QSlider鼠标响应事件,实现单击跳 ...

  2. 基于jQuery可悬停控制图片轮播代码

    基于jQuery可悬停控制图片轮播代码.这是一款可悬停切换全屏轮播jQuery幻灯片.效果图如下: 在线预览    源码下载 实现的代码: <!-- 轮播广告 --><div id= ...

  3. 玩转树莓派---详解树莓派的系统烧录,基础使用及基于树莓派制作手势控制的小车(附详细代码及演示效果)

    目录 一.写在前面 二.系统实现: Author:qyan.li Date:2022.6.10 Topic:详解树莓派的使用及基于树莓派制作手势控制的小车 Reference:如何给树莓派安装操作系统 ...

  4. 基于arduino的串口控制数码管(5611AH)显示数字(初学,入门级附代码)

    基于arduino的串口控制数码管(5611AH)显示数字只有干货 首先先要介绍一下数码管了,这里图片为5611AH,这种数码管主要分为共阴极和共阳极两种,这里用的是共阴极的. 注意区分 话不多说,直 ...

  5. 符号执行android,基于符号执行的android原生代码控制流图提取方法symbolic.pdf

    基于符号执行的android原生代码控制流图提取方法symbolic 第3 卷第7 期 网络与信息安全学报 Vol.3 No.7 2017 年7 月 Chinese Journal of Networ ...

  6. ffplay 控制音量的代码实现

    ffplay音频音量控制的代码 主要分享一下音量控制部分的代码实现 一.音量的大小调整函数 1.在void event_loop(VideoState *cur_stream)  这个事件循环函数下, ...

  7. ALSA声卡12_从零编写之添加音量控制_学习笔记

    1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_ ...

  8. python写安卓app控制蓝牙_基于python实现蓝牙通信代码实例

    这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...

  9. 基于alsa和libmad嵌入式mp3播放器

    可移植ok6410 的mp3播放器,基于alsa和libmad库,内含编译好的库和播放器以及源代码,解压后可直接运行,和以移植好的mplayer官方播放器(可快进 暂停 时间轴 音量控制等) 源码及移 ...

最新文章

  1. 03-编写dao实现类方式
  2. 【干货】Sketch+Keynote双剑合璧:5步快速制作移动动效
  3. spark.kubernetes.file.upload.path的作用
  4. MMDetection的调试笔记
  5. shell实现ftp命令示例
  6. HTML编辑器-Bluefish 2.0.1 发布
  7. mysql反思范文_MySQL学习笔记(一)
  8. 设置Mysql数据库的默认编码为utf8
  9. IAR3.11.1 搭建 STM8S003 模板工程
  10. C++编程验证费马小定律
  11. 五、数组、字符串以及冒泡排序--附代码案例
  12. 如何在JavaScript中对对象数组进行排序
  13. java优化编程 第2版_Java优化编程(第2版)林胜利、王坤茹 pdf
  14. ESP32任务看门狗实践
  15. 多线程爬取4k超高清美图壁纸
  16. 【EPS精品教程】EPS2016三维测图软件常用快捷键(建议收藏)
  17. 用threading+turtle画哆啦A梦,同时播放背景音乐
  18. 监控视频压缩2—Block-Composed Background Reference for High Efficiency Video Coding
  19. DBC 格式分析解读
  20. 自动驾驶出租车远程遥控驾驶研究

热门文章

  1. 源码包nginx 配置php,源码安装Nginx和PHP
  2. python使用局部敏感性哈希算法,在海量数据中查询相似序列
  3. 上传docker到阿里云镜像仓库
  4. php反序列化总结与学习
  5. postman接口测试:获取信息
  6. [HNOI2007] 分裂游戏
  7. jquery获取div/div之间的内容.text() 和 .html()区别
  8. Python的Request请求跳过认证及禁用警告
  9. quartz集群报错but has failed to stop it. This is very likely to create a memory leak.
  10. Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 ....