Вывод звука начинается с задержкой

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

Аппаратное обеспечение на 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?

Живой вывод Ubuntu 13.04, вставленный в http://paste.ubuntu.com/5630475/ - фактически здесь только самый первый вызов звука (или после некоторой длительной пользовательской паузы?) Начинается с задержкой, то есть после "... Left", "Front Right" слышно, тогда как в 12.10 всегда "... Left", "... Right".

тип
источник
1
Можете ли вы дать больше информации о звуковой карте и о том, с чем она связана? Можете ли вы попробовать с Джеком, если это тоже так? потому что это может быть связано с Pulse Audio, а не со звуковой картой.
ttoine
Realtek ALC892, кажется, предлагает много хитов в Google для моего: /
введите
установка драйвера от производителя, как в community.linuxmint.com/tutorial/view/1236, тоже не помогла. одна строка гласит: {.id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662},
введите

Ответы:

27

Я знаю, что собираюсь возродить старую ветку, но я нашел простое рабочее решение, которое решает проблему.

От: 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, чтобы применить изменения.

Dr_Evil
источник
Это был ответ и для меня, но у него есть и обратная сторона. У меня есть некоторые аудиопрограммы, использующие ALSA для прямой передачи определенного формата на ресивер домашнего кинотеатра для декодирования, а не для использования иногда хитрой повторной дискретизации PA. Это работает легко благодаря той же самой функции приостановки.
Moilleadóir
3

Похоже, что управление питанием не позволяет звуковой карте выводить первый фрагмент аудио. Из http://wiki.gentoo.org/wiki/Power_management/Soundcard важные биты таковы:

Настройка времени выполнения

Вы можете настроить драйвер в файловой системе sysfs в / sys / module / snd_hda_intel / parameters

Регулятор power_save_controller управляет включением режима энергосбережения. Это предустановлено опцией ядра ... энергосбережение ....

Ручка power_save устанавливает время ожидания в секундах. Это задано параметром ядра Время ожидания по умолчанию ...

вечера-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 постоянно посылать НЕКОТОРЫЙ сигнал, таким образом поддерживая работу приемника всегда. На данный момент я только что решил эту проблему в Windows, используя крошечную утилиту, написанную каким-то парнем в .NET, которая постоянно выдает нулевой сигнал. Он называет это SPDIF Keep-Alive. Это поддерживает прохождение сигнала, и мой приемник постоянно слушает. Я еще не видел способа сделать это для Linux, но я бы предположил, что поддержка для создания такой вещи существует ВЕЗДЕ. Надеюсь, это дало кому-то представление о том, что искать или где искать дальше! -K9SPY

Поддержание активности цифрового звука в действии SPDIF Keep-Alive в действии TOSLINK keep-alive для поддержки времени ожидания переходит в режим сна и выключает задержку звука SPDIF

K9SPY
источник
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 и работает нормально.

neatsoft
источник
Это сработало для меня в 19.04, за исключением перезапуска. Я должен был перезагрузиться, чтобы перезапустить pulseaudio, потому что pulseaudio -kдал мне некоторые ошибки.
Muclux
0

Общепринятый ответ о не загрузкаmodule-suspend-on-idle не решить проблему для меня. Чтобы «исправить» это, мне пришлось оставить команду непрерывного молчания в фоновом режиме, см. ОБНОВЛЕНИЕ 2 следующего вопроса:

И я воспроизвел эту проблему как во внутренних динамиках ноутбука, так и на ПК через HDMI и наушники, нет необходимости в SPDIF, в последних версиях ArchLinux и Ubuntu.

pepper_chico
источник