声音输出开始延迟


10

通过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

华擎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升级吗?

粘贴到http://paste.ubuntu.com/5630475/的实时Ubuntu 13.04输出-实际上,只有声音的第一次调用(或在用户长时间停顿之后?)才开始延迟,即在“ ...左”之后,听到“前右”,而在12.10中则始终为“ ...左”,“ ...右”。


1
您能否提供有关声卡及其连接方式的更多信息?如果是这种情况,您可以尝试使用Jackd吗?因为它可能与Pulse Audio而不是声卡有关。
ttoine

瑞昱ALC892似乎提供了大量的谷歌命中矿通:/
类型

community.linuxmint.com/tutorial/view/1236中安装制造商提供的驱动程序也无济于事。一行显示为:{.id = 0x10ec0892,.name =“ ALC892”,.patch = patch_alc662},
输入

Answers:


27

我知道我即将恢复旧的线程,但是我找到了一个可以解决该问题的简单工作解决方案。

来自:https : //wiki.archlinux.org/index.php/PulseAudio

要禁用空闲模块暂停加载,请在使用的配置文件(〜/ .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以应用更改。


这也是我的答案,但它也有缺点。我有一些音频程序使用ALSA直接将特定格式传递给家庭影院接收器以进行解码,而不是使用PA有时模糊的重采样。由于具有相同的挂起功能,因此很容易工作。
Moilleadóir

3

听起来电源管理正在阻止声卡输出音频的第一片段。在http://wiki.gentoo.org/wiki/Power_management/Soundcard中,重要部分如下:

运行时调整

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

如果启用了省电模式,则power_save_controller旋钮进行控制。它由内核选项...节能....预先设置。

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

pm-utils

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
    

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


很棒的答案,非常感谢!不幸的是,没有变化。
输入

我应该在etc / modprobe.d /中创建哪种类型的“新文件”?
比丘·苏普提

1

这是SPDIF /数字输出和接收机处理信号等的普遍问题。如果没有信号,则接收机进入空闲模式。开始播放信号需要几到几百毫秒的时间。解决此问题的唯一方法是使SPDIF输出不断发送SOME信号,从而使接收器始终保持活动状态。目前,我只是使用一个小家伙在.NET中编写的小实用程序在Windows中解决了这个问题,该小程序始终输出空信号。他称之为SPDIF Keep-Alive。这样可以保持信号畅通,并且我的接收器不断收听。我还没有找到在Linux上执行此操作的方法,但是我可以想象到,创建这样的事情的支持无处不在。希望这可以使某人对要搜索的内容或下一步要寻找的地方有所了解!-K9SPY

数字音频Keepalive保持生命SPDIF Keep-Alive保持生命TOSLINK keep-alive保持生命超时进入睡眠状态会降低SPDIF声音延迟


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

    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上进行了测试,效果很好。


在19.04中,这对我有用,除了重新启动部分。我不得不重新启动以重新启动Pulseaudio,因为这pulseaudio -k给了我一些错误。
muclux

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.