Добрый деньВозникла проблема контроля звукового сигнала на звуковой карте.
Задача отследить пропадание звукового потока подаваемого от спутникового ресивера на линейный вход звуковой карты, который перелопачивает darkice и отдает icecast
При плохой погоде сигнал от спутника ослабевает и начинает пропадать, нужно решение что бы отследить момент пропадания сигнала, для переключения звуковой системы на резервную линию.
Было бы отлично если бы можно было дополнительно отследить уровень сигнала на выходе звуковой карты, для исключения ситуации что резервная линия 1 к примеру недоступна ...
Драйвера и звуковые системы по умолчанию, FreeBSD 9.1 x64, without X11
Две звуковые карты, одна на вход по линейному входу, вторая на выход
Интересует решение средствами sh, или любым другим скриптом.Перелопатил интернет, но решения не нашел, кто знает, подскажите в какую сторону копать ...
На текущий момент копаю в сторону использования cat /dev/dsp0.1R A W - формат:
"Выборка" - это значение, которое подается на вход DAC или получается из ADC, обычно целое число ( 8 или 16 битов ). Выборка характеризует амплитуду звукового сигнала. Частота выдачи выборки определяется килогерцах ( HKz ), или выборок/секунду. Кроме этого, выборка может идти по одному каналу ( моно ), или двум ( стерео ), или ..., большему числу каналов. Тем самым для проигрывания выборки, кроме нее самой, необходимо знать:
число бит на выборку ( 8/16 бит, возможно до 32 бит );
частоту выборки ( 5Hkz/44Hkz, возможно до 48Hkz );
число каналов ( 1/2-моно/стерео, возможно до 4 каналов ).Если выборка стерео, это значит, что сначала идет байт первого канала, затем второго. И частота здесь характеризует выдачу обоих байт в секунду. Для стерео левый канал - первый.
Обычные характеристики RAW:
16/44/2Походу нужен вызов по крону раз в минуту скрипта, считывающего порцию данных с dsp0.1 за 10 сек предположительно ( для исключения пауз ) , вычисляем среднее значение тупо по всем байтам ( правильнее по словам из двух байт, но так меньше загрузка CPU - типа оптимизация :) ) этой порции данных и сравниваем это среднее значение с пороговым значением.
Я думаю как то так буду кодить.
Опять как всегда мне так помогли здесь правильными советами :)