声音输出开始延迟

声音输出开始延迟

通过 SPDIF 可听声音开始较晚,例如在测试声音对话框中,当声音应该说“前左”时,我最多只能听到“左”。

当我pavucontrol打开(在后台)并单击测试声音时,它会立即启动。

通常,启动任何音频/媒体文件时,开头都是无法输出/听到的。连接光纤或同轴电缆。这似乎只影响 Ubuntu 12.10,在 12.04 中不是这种情况,在 13.04 中似乎也不是这种情况!

ubuntuusers.de一点帮助——播放不可听见的窦性声音以保持 SPDIF 活跃:

apt-get install sox
play -n -c2 synth sin gain -100   # -c2 for two channels

ASRock 970 Extreme3​​ (和 GeForce 210) 上的硬件:

$ cat /proc/asound/cards
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfe200000 irq 16
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xfe080000 irq 25

$ cat /proc/asound/card0/codec* | grep Codec
Codec: Realtek ALC892

一些pulseaudio -v输出粘贴到http://paste.ubuntu.com/5629082/

我能以某种方式从 pulseaudio 2.1 升级吗?

Live Ubuntu 13.04 输出粘贴到http://paste.ubuntu.com/5630475/—— 实际上这里只有第一次调用声音(或者在用户长时间暂停之后?)开始延迟,即在“...左”之后听到“前右”,而在 12.10 中它总是“...左”,“...右”。

答案1

我知道我即将重新开始一个旧线程,但是我已经找到了一个可以解决该问题的简单可行的解决方案。

从 :https://wiki.archlinux.org/index.php/PulseAudio

要禁用 module-suspend-on-idle 模块的加载,请在使用的配置文件 (~/.config/pulse/default.pa 或 /etc/pulse/default.pa) 中注释掉以下行:

### Automatically suspend sinks/sources that become idle for too long
# load-module module-suspend-on-idle

最后重新启动 PulseAudio 以应用更改。

答案2

  1. 查找包含load-module module-suspend-on-idle以下行的 PulseAudio 配置文件:

    neatsoft@desktop:~$ grep module-suspend-on-idle /etc/pulse/*
    /etc/pulse/default.pa:load-module module-suspend-on-idle
    /etc/pulse/system.pa:load-module module-suspend-on-idle
    
  2. 注释掉那几行。

  3. 重新启动 PulseAudio 以应用更改:

    pulseaudio -k

刚刚在 Ubuntu 17.04 上测试过,运行良好。

答案3

听起来电源管理阻止了声卡输出第一个音频片段。来自http://wiki.gentoo.org/wiki/Power_management/Soundcard,重要内容如下:

运行时调优

您可以在 /sys/module/snd_hda_intel/parameters 下的 sysfs 文件系统中调整驱动程序

power_save_controller 旋钮控制是否启用省电模式。它由内核选项 ... power-saving ... 预设。

power_save 旋钮设置超时时间(以秒为单位)。它由内核选项默认超时时间预设...

pm-实用程序

pm-utils 包含一个脚本,用于在使用电池时启用省电模式,在使用交流电时禁用。它会覆盖内核的默认值。

如果您使用 pm-utils,但不想要这种调节,请禁用该脚本:root # touch /etc/pm/power.d/intel-audio-powersave

从上面的文字来看,可以尝试以下操作:

  1. 在终端中,运行以下命令并尝试再次播放音频:

    echo N | sudo tee /sys/module/snd_hda_intel/parameters/power_save_controller
    

    如果音频没有问题,那么您需要在 /etc/modprobe.d/ 中添加一个包含以下内容的新文件以使它永久生效:

    options snd_hda_intel power-saving=N
    
  2. 运行sudo touch /etc/pm/power.d/intel-audio-powersave并重启

    如果修复有效,则音频应该可以正常播放,如果没有,则再次删除该文件:

    sudo rm /etc/pm/power.d/intel-audio-powersave
    

如果这些都不起作用,那么我就没主意了:-)。

答案4

这是 SPDIF/数字输出和接收器处理信号等的常见问题。如果没有信号,接收器将进入空闲模式。开始播放信号需要几到几百毫秒的时间。解决此问题的唯一方法是让您的 SPDIF 输出不断发送一些信号,从而始终保持接收器处理处于活动状态。目前,我刚刚在 Windows 中使用某人用 .NET 编写的一个小实用程序解决了这个问题,该实用程序始终输出空信号。他称之为 SPDIF Keep-Alive。这可以保持信号流动,我的接收器可以不断监听。我还没有看到在 Linux 上执行此操作的方法,但我想创建这样的东西的支持无处不在。希望这能给某人一个想法,让他们知道接下来要搜索什么或去哪里查找!-K9SPY

数字音频保持连接保持连接 SPDIF保持连接保持连接 TOSLINK保持连接保持连接超时进入休眠关闭 SPDIF声音延迟

相关内容