首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保存数字输出的音量设置(S/PDIF)?

如何保存数字输出的音量设置(S/PDIF)?
EN

Ask Ubuntu用户
提问于 2012-07-12 08:47:30
回答 4查看 4.4K关注 0票数 4

Sound Settings中,我可以选择模拟输出和数字输出。当我选择“数字输出(S/PDIF)”时,每次启动后都要减少音量。我能做些什么来自动保存这些设置(关闭时)?

这些是我关闭时的设置:

开机后看起来是这样的:

自动保存的是我是选择模拟输出还是数字输出,也是存储模拟输出的音量设置。

卡和芯片,设置

我不使用额外的声卡;我有以下的ASRock M3N78D主板lshw打印:

代码语言:javascript
复制
*-multimedia
          Beschreibung: Audio device
          Produkt: MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio
          Hersteller: NVIDIA Corporation
          Physische ID: 7
          Bus-Informationen: pci@0000:00:07.0
          Version: a1
          Breite: 32 bits
          Uhr: 66MHz
          Fähigkeiten: pm bus_master cap_list
          Konfiguration: driver=snd_hda_intel latency=0 maxlatency=5 mingnt=2
          Ressourcen: irq:21 memory:fbd78000-fbd7bfff

Starting alsamixer向我展示了“芯片:通过VT1718S”。

这是aplay -l的输出:

代码语言:javascript
复制
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: NVidia [HDA NVidia], Gerät 0: VT1718S Analog [VT1718S Analog]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 1: VT1718S Digital [VT1718S Digital]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 2: VT1718S HP [VT1718S HP]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

这是来自pactl stat的输出:

代码语言:javascript
复制
Server-Name: pulseaudio
Server-Version: 1.1
Standard-Sample-Angabe: s16le 2ch 44100Hz
Standard-Kanalzuordnung: front-left,front-right
Standard-Sink: alsa_output.pci-0000_00_07.0.iec958-stereo
Standard-Quelle: alsa_input.pci-0000_00_07.0.analog-stereo

这是amixer的输出:

代码语言:javascript
复制
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 42
  Mono: Playback 0 [0%] [-63.00dB] [on]
Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 42
  Mono:
  Front Left: Playback 42 [100%] [0.00dB] [on]
  Front Right: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'PCM',0
  Capabilities: pvolume penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 253 [99%] [0.40dB]
  Front Right: Playback 253 [99%] [0.40dB]
Simple mixer control 'PCM Loopback',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 24 [77%] [1.50dB] [off]
  Front Right: Playback 24 [77%] [1.50dB] [off]
Simple mixer control 'Front',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 42
  Mono:
  Front Left: Playback 39 [93%] [-4.50dB] [on]
  Front Right: Playback 39 [93%] [-4.50dB] [on]
Simple mixer control 'Front Mic',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 31 [100%] [12.00dB] [off]
  Front Right: Playback 31 [100%] [12.00dB] [off]
Simple mixer control 'Front Mic Boost',0
  Capabilities: volume penum
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 3
  Front Left: 3 [100%] [30.75dB]
  Front Right: 3 [100%] [30.75dB]
Simple mixer control 'Surround',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 42
  Mono:
  Front Left: Playback 42 [100%] [0.00dB] [on]
  Front Right: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'Center',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 42
  Mono: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'LFE',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 42
  Mono: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'Side',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 42
  Mono:
  Front Left: Playback 42 [100%] [0.00dB] [on]
  Front Right: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'Line',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 0 [0%] [-34.50dB] [off]
  Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'CD',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 0 [0%] [-34.50dB] [off]
  Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'IEC958',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'IEC958 Default PCM',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch penum
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 31
  Front Left: Capture 28 [90%] [25.50dB] [on]
  Front Right: Capture 28 [90%] [25.50dB] [on]
Simple mixer control 'Capture',1
  Capabilities: cvolume cswitch penum
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 31
  Front Left: Capture 0 [0%] [-16.50dB] [on]
  Front Right: Capture 0 [0%] [-16.50dB] [on]
Simple mixer control 'Digital',0
  Capabilities: cvolume penum
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 120
  Front Left: Capture 60 [50%] [0.00dB]
  Front Right: Capture 60 [50%] [0.00dB]
Simple mixer control 'Dynamic Power-Control',0
  Capabilities: enum
  Items: 'Disabled' 'Enabled'
  Item0: 'Disabled'
Simple mixer control 'Independent HP',0
  Capabilities: enum
  Items: 'OFF' 'ON'
  Item0: 'OFF'
Simple mixer control 'Input Source',0
  Capabilities: cenum
  Items: 'Front Mic' 'Rear Mic' 'Line' 'CD' 'Stereo Mixer'
  Item0: 'Front Mic'
Simple mixer control 'Input Source',1
  Capabilities: cenum
  Items: 'Front Mic' 'Rear Mic' 'Line' 'CD' 'Stereo Mixer'
  Item0: 'Stereo Mixer'
Simple mixer control 'Loopback Mixing',0
  Capabilities: enum
  Items: 'Disabled' 'Enabled'
  Item0: 'Disabled'
Simple mixer control 'Rear Mic',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 31 [100%] [12.00dB] [off]
  Front Right: Playback 31 [100%] [12.00dB] [off]
Simple mixer control 'Rear Mic Boost',0
  Capabilities: volume penum
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 3
  Front Left: 0 [0%] [0.00dB]
  Front Right: 0 [0%] [0.00dB]

Oddities

当我在听音乐时切换到“模拟输出”时,连接到数字输出的扬声器也可以使用,但音量是100%,我无法调整它--只有当我切换回“数字输出”或使用alsamixer和dim "PCM“时。

当我在音频设置中选择“数字输出”并启动alsamixer时,更改“主”音量不会产生任何影响。"S/PDIF“和"S/PDIF D”也显示在那里,但两者都设置为"00“,我不能修改它们.

当我将音量调整到正常水平(即40%)并运行sudo alsactl store和重新启动时,面板中的音量图标不会显示100%,但是声音是100%的--直到我向下滚动到图标上方:然后它立即跳转到39%。

EN

回答 4

Ask Ubuntu用户

发布于 2012-09-20 22:43:22

我也有同样的问题。模拟被保存/恢复,但SPDIF总是启动后的最大打击。我并不特别喜欢在登录时将音量设置为零或低,因为我对登录屏幕上的启动声音很恼火,吹开了我的窗口。我还没有真正找到解决办法,但情况好转了。我就是这样做的:

  • 我认为这个问题可能是因为模拟输出是卡0的设备0,而数字是设备1(卡0)。(XiFi芯片之类的)和存储/恢复过程只存储第一个。然而,alsactl存储/恢复(Re)存储所有卷级别的“完全”状态。
  • 我总结了它的alsa没有保存/恢复spdif输出的状态(卡片:0,设备:1)为'alsactl存储‘/.还原对spdif通道没有影响。它仍在原处。
  • 在声音控制面板中选择SPDIF之后,运行'alsactl存储‘将给出一个不同的/var/lib/alsa/asouns.state文件。不知道这会导致什么结果,但也许阿尔萨会看到不同的音量控制,具体取决于控制面板中选择的输出?
  • alsactl -f /var/lib/alsa/asound.state存储似乎可以工作(给我一个新的asouns.state)
  • -f /var/lib/alsa/asound.state还原给我:" alsactl : set_control:1464:无法写入控件'2:0:0:IEC958 958回放默认值:0‘:不允许操作“
  • 我计算出IEC958确实是数字输出。
  • 停止我的音乐播放器:错误消失
  • 已安装的临时控件,选定的默认输出
  • 删除/var/lib/alsa/asound.state
  • 重新启动
  • 卷滑块现在在重新启动时恢复,实际卷似乎不是。

也许这对某人有帮助。至少移除你的asound.state,看看它是否有用。

票数 2
EN

Ask Ubuntu用户

发布于 2012-07-17 21:03:47

我不知道如何“正确”地做到这一点,但是您也许可以添加一个启动脚本来完成这项工作。使用程序"amixer",我可以产生输出,列出0到64之间的声音输出的设置,包括“主”通道。在关闭之前,可以解析(使用regex吗?)要将卷存储在文件中,请执行以下操作。当系统再次启动时,可以发出命令“”将卷设置为存储的值。

通过将其添加到shell脚本(通常是/etc/init.d中的启动作业),您可以自动完成它,这将使它看起来是无缝的。我以前使用过这些启动脚本来做其他的事情,我完全没有理由认为它也不能解决您的问题。

详细信息:

第一步是创建一个能够更改卷的shell脚本。目前,我没有时间也没有所有的详细知识来为您编写它,但是如果您对脚本有一点了解,或者如果您能够找到一个好的教程,它应该不会那么难。如果你有问题,我很乐意帮忙。下面是您可以使用的模板。

代码语言:javascript
复制
#! /bin/sh

start(){
    # This function is called on startup
    # This is where you will need to read the volume from a file and call amixer
}

stop(){
    # This function is called on shutdown
    # This is where amixer is called and the volume is saved to file
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo "Usage: avolumesaver {start|stop}"
        exit 1
esac

exit 0

基本上,只要系统启动,就会调用start函数,并在关闭之前调用stop函数。在这些功能中你可以做任何你想做的事。您应该以根用户身份打开编辑器(终端处的“sudo gedit”),然后将文件保存为"/etc/init.d/avolumesaver“。这样做之后,您将需要发出以下命令:

代码语言:javascript
复制
chmod a+x /etc/init.d/avolumesaver
update-rc.d avolumesaver defaults

第一行将使脚本可执行。第二行将其转换为一个新开始的作业。从技术上讲,这只是意味着创建了一些符号链接,但是使用upd-rc.d而不是自己添加链接是个好主意。

完成此操作后,您可以编辑/etc/init.d/avolumesaver,直到实现了所需的目标为止。您可以通过发出以下命令(使其成为一个启动作业之后)来测试该功能,而无需实际重新启动:

代码语言:javascript
复制
service avolumesaver start
service avolumesaver stop
票数 0
EN

Ask Ubuntu用户

发布于 2012-07-27 12:17:06

我问过类似的问题,这里。也许能帮上忙。

它在每次登录后将卷级别设置为特定值。它与PulseAudio和数字输出一起工作。

  1. 将默认脉冲配置文件复制到您的主位置:cp /etc/pulse/default.pa ~/.pulse
  2. 在您的配置文件中,找到下面一行:load-module module-always-sink紧接在上面的行之后,添加以下行:set-sink-volume 0 {your-volume-level-here}卷级别是0.65535范围内的一个数字。例如:set-sink-volume 0 32768
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/162728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档