相关疑难解决方法(0)

从C代码设置ALSA主卷

我一直在寻找一个简单的C代码示例来设置ALSA混音器的主音量,但是对于这个所谓的常见操作却找不到任何简单的东西.

我对ALSA完全不熟悉,所以制作我自己的最小例子需要时间.如果有人能提供,我会很高兴.

c linux embedded mixer alsa

27
推荐指数
1
解决办法
2万
查看次数

从 C 代码以 dB 为单位设置 ALSA 主音量

我似乎无法在我的机器上以 dB 为单位设置音量。

我在 VirtualBox 中运行 Ubuntu 13.04 系统(用于开发)。

我按照这些说明将音量设置为标量控制静音状态,一切正常。

但是当我尝试使用此功能将其设置为 dB 时

snd_mixer_selem_set_playback_dB_all(元素,音量,0)

或使用该功能

snd_mixer_selem_set_playback_dB(elem, chn, volume, 0)

它总是失败并显示错误代码-22(无效参数)

在您提问之前:我已经尝试了多种要设置的音量级别(从 -20000 到 20000),并且我还将最后一个参数更改为三个定义的值 [-1, 0, 1]

这是我现在用于测试的完整代码:

#include <alsa/asoundlib.h>
#include <stdbool.h>
#include <stdlib.h>

void SetAlsaMasterVolume(long volume) {
    long min, max;
    snd_mixer_t *handle;
    snd_mixer_selem_id_t *sid;
    const char *card = "default";
    const char *selem_name = "Master";
    int x, mute_state;
    long i;
    
    snd_mixer_open(&handle, 0);
    snd_mixer_attach(handle, card);
    snd_mixer_selem_register(handle, NULL, NULL);
    snd_mixer_load(handle);
    
    snd_mixer_selem_id_alloca(&sid);
    snd_mixer_selem_id_set_index(sid, 0);
    snd_mixer_selem_id_set_name(sid, selem_name);
    snd_mixer_elem_t* …
Run Code Online (Sandbox Code Playgroud)

c linux mixer alsa

5
推荐指数
1
解决办法
3636
查看次数

标签 统计

alsa ×2

c ×2

linux ×2

mixer ×2

embedded ×1