LINUX.ORG.RU

тебе кроссплатформенно или под линукс?

Harald ★★★★★
()

прилинковать библиотеку и скормить ей файл

unt1tled ★★★★
()

Считай заголовок файла, настрой альсу согласно ему (там битрейт и кол-во каналов) и тупо заливай остальной файл ей в буфер (как в WAV, так и в альсе, используется «голый» PCM, главное чтобы совпал порядок байт, частота дискретизации, порядок и колличество звуковых каналов)

RiseOfDeath ★★★★
()

С минимальным только лисапедостроительство. А нужно оно тебе?

anonymous
()
echo "main(i){for(i=0;;i++)putchar(((i*(i>>17|i>>9)&46&i>>3))^(i&i>>10|i>>100));}" | gcc -x c - && ./a.out | aplay
EXL ★★★★★
()
test -e /dev/dsp || modprobe snd-pcm-oss

, потом просто открываешь /dev/dsp и скармливаешь ему данные.

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

Все это, конечно, хорошо, но вот беда - устройство /dev/dsp в системе отсутcтвует. Как быть?

echo «main(i){for(i=0;;i++)putchar(((i*(i>>17|i>>9)&46&i>>3))^(i&i>>10|i>>100));}» | gcc -x c - && ./a.out | aplay

Шутку заценил, ага. Сам когда-то эту статью читал. ;)

MBK
() автор топика
Ответ на: комментарий от RiseOfDeath

«голый» PCM

Даш фотки?

Внутри вавки может лежать, ВНЕЗАПНО, даже mp3 или иные популярные кодеки. Сам встречал вавки в десятком разных форматов сжатия данных.

FeyFre ★★★★
()

подключи либу альсы и слинкуйся с ней

иначе - велосипеды. Знай, что не у всех есть

1) /dev/dsp
2) aplay

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

не у всех есть 1) /dev/dsp

Вот именно, что у меня его нету. Хотя, aplay работает, насколько я понимаю, через ALSA?

Есть /dev/snd - внутри controlC0, pcmC0D0p, pcmC0D1p, seq, timer Это чем то может помочь?

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

Вот именно, что у меня его нету.

можешь кстати детектить pulseaudio и использовать padsp

в остальном - гугли документацию альсы

reprimand ★★★★★
()

Как проще всего реализовать сабж с минимальным использованием внешних пакетов?

можно, например, просто вкомпилить содержимое «внешних пакетов» в свою прогу. если это допустимо — способ и простота ограничены только твоей фантазие. можно хоть ffmpeg, хоть libsndfile...

через что выводить — зависит от платформы. на линуксе типично есть alsa и pulseaudio.

ну а если хочется совсем минималистично, то накодить примитивный парсер wav-файлов элементарно, и выводить через OSS (/dev/dsp), пуская прогу через aoss, вот так: «aoss myprogram».

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

Я ж говорю, нет его.

aoss делает так что он есть, даже когда его нет

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

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

$ gcc -o ao_example ao_example.c -lao -ldl -lm $ ./ao_example $ ./ao_example: error while loading shared libraries: libao.so.4: cannot open shared object file: No such file or directory

Что я сделал не так?

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

а библиотеку установил? 'sudo make install'

если нет, то надо хотя бы указать ld где ее искать:

LD_LIBRARY_PATH=. ./ao_example

или линкуй статически

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

устройство /dev/dsp в системе отсутcтвует. Как быть?

У тебя какие-то проблемы с восприятием моноширинного текста?

Как меня видно?

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

Нет, не у всех.

давай, расскажи мне у кого нет

чтобы ты понял что я имею ввиду:

1) alsa есть априори во всех linux дистрах, в древних же - есть /dev/dsp для совместимости
2) в *BSD есть alsa-lib, который обеспечивает совместимость (прослойку?) между программой и нативным OSS

кейсы с наличием венды вместо ОС и кастомных ядер без альсы не рассматриваю

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

Тут человек не может готовую либу подгрузить после линковки, а вы предлагаете ему разбираться в хитрожопом api ALSA?

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

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

Кто-то начинал админом, кто-то программистом, кто-то вообще гуманитарий в голове.

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

Ну вот например в алса не все карты поддерживаются.

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

Тут человек не может готовую либу подгрузить после линковки, а вы предлагаете ему разбираться в хитрожопом api ALSA?

Кое как подгрузил либы, но все равно не выходит каменный цветок - ao_example запускается, выдает две строки: «libao example program» и «error opening device» Что я снова делаю не так?

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

Попробовал конфигурировать /etc/libao.conf, какой default_driver ни ставлю - результат один и тот же - две вышеприведенные строки. Единственное различие, если ставлю default_driver=oss к тем двум добавляется еще одна: «ao_oss ERROR: open default => No such file or directory» Как быть дальше?

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

Блин если с самым простым столько танцев с бубном, представляю себе, что с ALSA :-( А какие еще альтернативы есть?

MBK
() автор топика
Ответ на: комментарий от whoami

Попробовал и это С распберришного репозитория скачал и установил ихний libao-dev. Толку примерно столько же - все устанавливается, ao_example прекрасно компилируется, но при запуске ругается на Error opening device при любом установленном в libao.conf драйвере. Что за неведомая хрень? Aplay работает прекрасно и ALSA детектит. :-(

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