LINUX.ORG.RU

[bash] Воспроизведение звука

 


0

0

Недавно узнал, что через bash-скрипты можно воспроизводить звук. Например, если есть файл sound.raw со звуковыми данными, то его можно воспроизвести с помощью команды:

% cat sound.raw > /dev/dsp

Вот только одна проблема. Перед тем, как что-то записывать в устройство /dev/dsp, его необходимо настроить. Например, в C программе это делается так:

dsp = open("/dev/dsp", O_WRONLY, 0);
format = AFMT_U8;
ioctl(dsp, SNDCTL_DSP_SETFMT, &format);
cnls = 1;
ioctl(dsp, SNDCTL_DSP_CHANNELS, &cnls);
freq = 22050;
ioctl(dsp, SNDCTL_DSP_SPEED, &freq);

И только после этого можно записывать данные. А в bash-скриптах как вызывать функцию ioctl?

может лучше play для этого пользовать?

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

> ты еще в баш попроси работу с указателями как в С. Каждому свое.

Кстати хорошая мысль -- ioctl для баш.

format=AFMT_U8
format=`ioctl /dev/dsp SNDCTL_DSP_SETFMT $format`
cnls=1
cnls=`ioctl /dev/dsp SNDCTL_DSP_CHANNELS $cnls`
freq=22050
freq=`ioctl /dev/dsp SNDCTL_DSP_SPEED $freq`

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

>>А ты mplayer из баш-скрипта запустить не пробовал?
Вопреки нику мысль очень здравая)))
Но возможно автор хочет переносимости скрипта на машинки без плеера, установленного у него(:
Хотя я бы так и сделал...

Dikar ★★
()
Ответ на: комментарий от val-amart

> а варианты с записью в файл устройства или play непортабельны на не-линукс

Вот именно. Как раз mplayer портабельнее.

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

> Вот именно. Как раз mplayer портабельнее.

нафига mplayer? sox( для тех кто не знает /usr/bin/play - это также он ) - весит гораздо меньше, зависимостей лишних тоже меньше

lester ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.