LINUX.ORG.RU

«Audio device got stuck!»

 , ,


0

1

Когда пытаюсь слушать несжатые звуковые файлы, например *.WAV или *.VOC, или просто выкушенные из игр несжатые потоки PCM, Mplayer 3-4 раза в секунду заикается с ошибкой «Audio device got stuck!». Перезапуск Pulseaudio, который всюду советуют, не помогает. Вот в этой теме: Пропал звук registrant советует добавить ключ "-ao alsa:device=hw=0.0". Это помогло, но при проигрывании нескольких файлов часть пропускает с ошибкой:

[AO_ALSA] alsa-lib: pcm_hw.c:1602:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-16): Device or resource busy
[AO_ALSA] Playback open error: Device or resource busy
Failed to initialize audio driver 'alsa:device=hw=0.0'
Could not open/initialize audio device -> no sound.

В чём проблема? Существует ли решение, гарантирующее воспроизведение всех файлов с первой попытки?

Устройство опознаётся как «Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)».

Дистрибутив — Ubuntu 18.04. Сносить Pulseaudio нежелательно, он нужен для Скайпа и GoToMeeting в Хромиуме.

★★★★★

Ответ на: комментарий от zvezdochiot

Слышимого заикания на WAV нет. Как им проигрывать сырые PCM с 8 байтами мусора в начале? Он опознаёт мусор как магические числа, пытается обрабатывать как соответствующий формат и ничего не получается.

question4 ★★★★★ ()
Последнее исправление: question4 (всего исправлений: 1)

Device or resource busy

...

Failed to initialize audio driver 'alsa:device=hw=0.0'

Я не знаю что конкретно означает EBUSY в контексте ASLA, но предполагаю тут одну из следующих проблем:

  • Устройство ALSA уже занято другим приложением (скорее всего это)
  • Устройство не умеет нужную частоту дискретизации, количество бит на сэмпл или количество каналов

На современных системах pulseaudio решает обе проблемы.

На более старых системах это решалось правильно настроенными юзерспейсными плагинами alsa (dmix, etc.).

mironov_ivan ★★★★★ ()
Ответ на: комментарий от zvezdochiot

Указать тип непосредственно: -t ...

Так и делал:

$ play -c 1 -r 11000 -b 8 -t u8 *
play WARN alsa: can't encode 0-bit Unknown or not applicable
play FAIL formats: can't open input file `ZOOMOUT.SMP': SMP header does not begin with magic word SOUND SAMPLE DATA

Сейчас обнаружил, что по одному файлы нормально принимаются. Проблема только когда все сразу.

question4 ★★★★★ ()
Ответ на: комментарий от question4

по одному файлы нормально принимаются. Проблема только когда все сразу.

Хмм.

for tfile in *; do play -c 1 -r 11000 -b 8 -t u8 $tfile; done

PS: С mplayer разберись, а лучше накати mpv.

zvezdochiot ()
Последнее исправление: zvezdochiot (всего исправлений: 1)
Ответ на: комментарий от mironov_ivan

На современных системах pulseaudio решает обе проблемы.

Проблема только на машине с pulseaudio. На дистрибутиве без него эти файлы на этой машине игрались нормально.

Внимательно перечитай стартовое сообщение. Через pulseaudio несжатые файлы нормально не проигрываются никогда. Если ты знаешь, как это исправить — предлагай.

question4 ★★★★★ ()
Ответ на: комментарий от zvezdochiot

Через apulse пробовал?

Ещё нет. И если mironov_ivan придумает, как заставить pulseaudio работать нормально, останусь на нём. Раздельное управление громкостью Хромиума и Скайпа бывает полезно, когда нужно сидеть на 2 совещаниях одновременно :)

question4 ★★★★★ ()
Ответ на: комментарий от zvezdochiot

Ну чорт Вас знает. Не старая система - это ночная сборка, что ли?

Почему и зачем автор пытается играть звук мало того, что через ASLA, так ещё и напрямую через hw: (то есть без стандартных плагинов ALSA) - это вопрос к автору темы.

mironov_ivan ★★★★★ ()
Ответ на: комментарий от zvezdochiot

А перепаковать SoX-ом всю ботву во flac?

Долго. Скриптом вырезаю файлы, пробую слушать, если не получается — правлю скрипт дальше. Перепаковка сильно замедлит.

question4 ★★★★★ ()
Ответ на: комментарий от mironov_ivan

Почему и зачем автор пытается играть звук мало того, что через ASLA, так ещё и напрямую через hw: (то есть без стандартных плагинов ALSA) - это вопрос к автору темы.

Потому что это единственный сработавший способ избавиться от лагов pulseaudio. Если можно сделать лучше — всё ещё жду предложений.

question4 ★★★★★ ()
Ответ на: комментарий от question4

Скриптом вырезаю файлы

А! Так это прям сырьё-сырьё. Тогда ничем особо не поможешь.

«П..ц - это не приговор. 'Дикое радио' помнит о тебе.»

zvezdochiot ()
Последнее исправление: zvezdochiot (всего исправлений: 1)
Ответ на: комментарий от question4

Ещё нет. И если mironov_ivan придумает, как заставить pulseaudio работать нормально, останусь на нём.

У тебя, судя по куску лога из первого поста, pulseaudio НЕ ИСПОЛЬЗУЕТСЯ плеером. «alsa:device=hw=0.0» означает, буквально, «используй железку 0.0 без всяких украшательств». И это, в том числе, запрещает использование pulseaudio через слой совместимости с ALSA.

Так что это тебе надо разобраться с плеером. И понять как заставить его или использовать pulseaudio напрямую, или как минимум ALSA правильным образом (дефолтное устройство, которое обычно эмулируется через PA).

mironov_ivan ★★★★★ ()
Ответ на: комментарий от question4

Потому что это единственный сработавший способ избавиться от лагов pulseaudio.

Ещё раз: к hw: для карт без аппаратного микшера (а такие сейчас все) может быть подключено ровно одно приложение. И плюсом, с hw: не работает автоматическое преобразование частоты или разрядности сэмплов, даже встроенное в юзерспейсную часть ALSA.

mironov_ivan ★★★★★ ()
Ответ на: комментарий от mironov_ivan

У тебя, судя по куску лога из первого поста, pulseaudio НЕ ИСПОЛЬЗУЕТСЯ плеером. «alsa:device=hw=0.0» означает, буквально, «используй железку 0.0 без всяких украшательств». И это, в том числе, запрещает использование pulseaudio через слой совместимости с ALSA.

Этот лог относится только к запуску с «-ao alsa:device=hw=0.0». Без него единственная ошибка в консоли — «Audio device got stuck!» И заикания.

question4 ★★★★★ ()
Ответ на: комментарий от question4

Без него единственная ошибка в консоли — «Audio device got stuck!» И заикания.

Тогда давай пример файла.

upd. А ещё логи своего плеера, когда он использует PA нативно. Если можно включить verbose/debug - включи.

mironov_ivan ★★★★★ ()
Последнее исправление: mironov_ivan (всего исправлений: 1)
Ответ на: комментарий от mironov_ivan

с hw: не работает автоматическое преобразование частоты или разрядности сэмплов, даже встроенное в юзерспейсную часть ALSA.

В моём случае проблема не в этом, со второй попытки файлы нормально проигрались. Видимо, кто-то захватывал и не отпускал устройство. Либо предыдущий экземпляр mplayer не успевал отпустить, либо демон pulseaudio.

question4 ★★★★★ ()
Ответ на: комментарий от mironov_ivan

Тогда давай пример файла.

Куда можно выложить 2 килобайта? Что-то ничего не придумывается. Файл на 2К:

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

Файл на 60К: https://pastebin.com/kxeWBGMw

Играть командами

mplayer -rawaudio rate=15384:channels=1:samplesize=1 -demuxer rawaudio -format u8 X.SMP
mplayer -rawaudio rate=10526:channels=1:samplesize=1 -demuxer rawaudio -format u8 SELECT2.SMP

question4 ★★★★★ ()
Ответ на: комментарий от zvezdochiot

накати mpv

mpv --demuxer=rawaudio --demuxer-rawaudio-rate=10526 --demuxer-rawaudio-channels=1 --demuxer-rawaudio-format=u8 *

проиграло всё без заиканий, но выдавало ошибку «Error decoding audio.» на всех файлах. Кроме одого архива 7Z :)

question4 ★★★★★ ()
Ответ на: комментарий от question4

Файл на 2К

$ mplayer -rawaudio rate=15384:channels=1:samplesize=1 -demuxer rawaudio -format u8 X.SMP
MPlayer 1.3.0-4.7 (C) 2000-2016 MPlayer Team

Playing X.SMP.
rawaudio file format detected.
Load subtitles in ./
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 15384 Hz, 1 ch, u8, 123.1 kbit/100.00% (ratio: 15384->15384)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [oss] 15384Hz 1ch u8 (1 bytes per sample)
Video: no video
Starting playback...
A:   0.2 (00.1) of 0.2 (00.1) ??,?% 


Exiting... (End of file)
zvezdochiot ()
Ответ на: комментарий от question4

rate=15384
rate=10526

Это очевидный бред.

С mpv работает, но в файлах мусор:

$ mpv --demuxer=rawaudio --demuxer-rawaudio-format=u8 --demuxer-rawaudio-channels=1 --demuxer-rawaudio-rate=8000 sample.raw
Playing: sample.raw
 (+) Audio --aid=1 (pcm_u8 1ch 8000Hz)
AO: [pulse] 8000Hz mono 1ch u8
A: 00:00:05 / 00:00:06 (95%)


Exiting... (End of file)
mplayer у меня не установлен.

mironov_ivan ★★★★★ ()
Последнее исправление: mironov_ivan (всего исправлений: 1)
Ответ на: комментарий от question4

Потому что взятая с потолка частота дискретизации не имеет смысла.

Типичные частоты для звука есть в таблице вот тут: https://en.wikipedia.org/wiki/Sampling_(signal_processing)#Sampling_rate

С другой стороны, неправильная частота дискретизации может дать только замедленное или ускоренное воспроизведение.

mironov_ivan ★★★★★ ()
Последнее исправление: mironov_ivan (всего исправлений: 2)
Ответ на: комментарий от mironov_ivan

Частота дискретизации для этих файлов вычисляется по формуле 1000000 / (255-frequency_divisor) где frequency_divisor — 5-й байт файла. Это оказался формат Creative Voice с отрезанными 26 байтами заголовка.

question4 ★★★★★ ()
echo "autospawn = no" >> ~/.config/pulse/client.conf
killall pulseaudio
sudo modprobe snd-pcm-oss
sudo modprobe snd-mixer-oss
cat /boot/vmlinuz > /dev/dsp

Когда надоест, убираешь эту строку из конфига пульсы, и запускаешь её снова

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от question4

Я помню как PulseAudio сделали в Ubuntu 8.04. А в Ubuntu 7.10 был ALSA. Всё было нормально, два приложения одновременно могли выводить звук и не мешали друг другу. Зачем тогда её сделали, я не понимаю.

Я предлагаю послушать звуки, которые ты хотел послушать, а потом включить «пульсу» снова. И кстати, я нашёл, как это сделать, не включая OSS.

Если включать Пульсу снова не хочешь - поищи сторонние регуляторы звука. Например GMixer (но он вроде на GTK2). Значок в системный трей можно Volti (тоже GTK2). Аналоги для GTK3 я не знаю. Сам я пользуюсь регуляторами громкости на клавиатуре. Они работают без сторонних регуляторов.

Заикания звука при использовании PulseAudio можно победить, если почитать:

https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting_(Русский)

На ЛОРе есть какая-то строчка, которую добавляют в файл конфигурации. Но сходу я её не нашёл. Возможно что это.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

http://lurklurk.com/TRUE-DEATH-PRIMITIVE-LINUX-MITOLL

Предпочитаю это делать через mplayer.

Если включать Пульсу снова не хочешь - поищи сторонние регуляторы звука. Например

Для КДЕ что-нибудь можешь порекомендовать? :) (Если нет, сам найду, не страшно.)

https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting_(Русский)

Спасибо, но там ничего похожего беглым просмотром не нашёл. И в английской версии тоже. Ещё раз перечитаю внимательнее.

Пердит иногда звук в Ubuntu 18.04 (комментарий)

Спасибо, попробую, когда время будет.

question4 ★★★★★ ()
Последнее исправление: question4 (всего исправлений: 1)