Почему Linux не позволяет мне играть с / dev / dsp?

12

Я работаю над учебником по Linux, и он рассказывает мне об устройствах. Он говорит, что если я отправлю соответствующий вывод /dev/dsp, то он будет воспроизводить звук. Например cat file.wav > /dev/dsp, где file.wav это просто любой файл .wav.

Когда я делаю это, я получаю разрешение отказано. Если я запускаю это с sudo, мне все равно отказывают в разрешении. Если я suпервый, звук не играет.

Почему мне отказывают в разрешении sudo? Почему звук не играет даже с su?

Корган Ривера
источник
1
Убедитесь, что ваш пользователь в audioгруппе.
Карл Гронер
Вам также может потребоваться убедиться, что ваш файл WAV является необработанным аудио - не все файлы WAV являются необработанными.
Дрейк Кларрис
@DrakeClarris, из-за которого выводится шум, а не ошибка отказа в разрешении.
CJM
@cjm Я больше думал о тишине, когда играл с использованием su
Drake Clarris

Ответы:

14

/dev/dspявляется частью OSS, которая не была частью ядра Linux в течение очень долгого времени. Он давно вытесняется ALSA, которая использует разные устройства, разные программы и разные API.

Хотя есть модуль эмуляции слоя. Если он доступен, то загрузка snd-pcm-ossмодуля позволит вам использовать устройства PCM для OSS, такие как /dev/dsp.

Или просто придерживайтесь данных aplayили paplayвместо этого.

Игнасио Васкес-Абрамс
источник
2
sudo modprobe snd-pcm-ossработает на моем Ubuntu, чтобы загрузить этот модуль. Я получаю /dev/dsp1и /dev/dsp2выход из этого.
Веда
9

Если я запускаю это с sudo, мне все равно отказывают в разрешении.

Этим утверждением кажется, что вы пытаетесь выполнить команду вроде:

sudo cat file.wav > /dev/dsp

Причина, по которой вы продолжаете получать «разрешение запрещено», заключается в том, что ваша оболочка сначала пытается открыть /dev/dspустройство для вывода, прежде чем запустить команду (которая есть sudo). Чтобы оболочка открыла перенаправление с привилегиями root, вам нужно сделать что-то вроде:

sudo sh -c 'cat file.wav > /dev/dsp'
Грег Хьюгилл
источник
6

Устаревшая книга, как отмечено.
Таким образом, чтобы примеры работали с более современным Linux, где написано что-то вроде

cat music.wav > /dev/dsp

измените это на:

cat music.wav | aplay

И вы только что сделали свой первый перенос кода! Выиграть! Не стесняйтесь присылать книги авторам патчей. :-)

Хэл
источник