LINUX.ORG.RU

Как програмно проиграть wav-файл?


0

0

Есть программа (точнее должна быть :)), которая по ходу своего выполнения, сообщает пользователю текущее состояние девайса. Все фразы сохранены в wav-файлах. Собственно вопрос: как из программы проиграть такой файл.

P.S. Программа пишется на С.


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

может и не заработать, надо, исходя из заголовка файла, настроить /dev/dsp - количество каналов, разрядность отчётов(8,16 или 24 бита), частоту дискретизации. Делается это через ioctl примерно так:
#include <sys/ioctl.h>
#include <sys/soundcard.h>
...
if ((sound_dev = open ("/dev/sound/dsp", O_WRONLY)) == -1)
sound_dev = open ("/dev/dsp", O_WRONLY);
if (sound_dev == -1)
fprintf (stderr,"Failed to initialize OSS device");
if (ioctl (sound_dev, SNDCTL_DSP_SYNC, 0) == -1)
fprintf (stderr,"Failed to sync with DSP");
channels = 2;
ioctl (sound_dev, SNDCTL_DSP_CHANNELS, &channels);
ioctl (sound_dev, SNDCTL_DSP_SYNC, 0);
fmt = AFMT_S16_LE;
ioctl (sound_dev, SNDCTL_DSP_SAMPLESIZE, &fmt);
ioctl (sound_dev, SNDCTL_DSP_SYNC, 0);
rate = 44100;
if( ioctl (sound_dev, SNDCTL_DSP_SPEED, &rate)==-1){
fprintf (stderr,"\nFailed to set dsp speed");
}

...

anonymous
()

system("play somewhere/some.wav");

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

Велосипеды нынче в моде? Берем libao, там такое делается в четыре строки.

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