The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
sox stat, !*! vfp7, 17-Окт-13, 12:50  [смотреть все]
Добрый день

Имеем такую строку:

  sox -V0 -tossdsp -r48000 -c2 /dev/dsp3.1 -traw /dev/null stat trim 0 3

Она считывает с звуковой карты 3 сек звукового потока и выводит статистику по этому потоку:

Input File     : '/dev/dsp3.1' (ossdsp)
Channels       : 2
Sample Rate    : 48000
Precision      : 16-bit
Sample Encoding: 16-bit Signed Integer PCM

In:0.00% 00:00:03.07 [00:00:00.00] Out:144k  [======|=====!] Hd:0.0 Clip:0
Samples read:            294912
Length (seconds):      3.072000
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.338436
Mean    amplitude:    -0.000044
RMS     amplitude:     0.418896
Maximum delta:         1.768463
Minimum delta:         0.000000
Mean    delta:         0.254371
RMS     delta:         0.320575
Rough   frequency:         5846
Volume adjustment:        1.000
Done.

Задача выщипнуть значение "1.768463" из строки "Maximum delta"        
Вариант добавить в конце | grep 'Maximum delta' не прокатывает, sox ждет продолжения команд.
Заранее спасибо.

  • sox stat, !*! михалыч, 14:14 , 17-Окт-13 (1)
    • sox stat, !*! vfp7, 14:51 , 17-Окт-13 (2)
      >> Задача выщипнуть значение "1.768463" из строки "Maximum delta"
      >> Вариант добавить в конце | grep 'Maximum delta' не прокатывает, sox ждет
      >> продолжения команд.
      >> Заранее спасибо.
      > А если так ущипнуть, добавить после grep'а
      > | awk '{print $3}'
      > или
      > | awk -F: '{print $2}'

      Здесь самое главное и заключается как вывод sox с stdout завернуть на grep ...
      Дальше уже дело техники :)

      • sox stat, !*! михалыч, 15:33 , 17-Окт-13 (3)
        • sox stat, !*! vfp7, 16:16 , 17-Окт-13 (4)
          >[оверквотинг удален]
          >>>> Заранее спасибо.
          >>> А если так ущипнуть, добавить после grep'а
          >>> | awk '{print $3}'
          >>> или
          >>> | awk -F: '{print $2}'
          >> Здесь самое главное и заключается как вывод sox с stdout завернуть на
          >> grep ...
          >> Дальше уже дело техники :)
          > echo | sox -V0 -tossdsp -r48000 -c2 /dev/dsp3.1 -traw /dev/null stat trim
          > 0 3

          Тоже не проходит :)
          Не отрабатывает ...

          • sox stat, !*! михалыч, 16:20 , 17-Окт-13 (5)
            • sox stat, !*! vfp7, 16:33 , 17-Окт-13 (6)
              > Какой-то хитрый у вас терминал. Висит что-ли?
              > И как это вы так умудрились, у меня не получается!
              > Ну, а если записать вывод во временный файл и после взять оттуда?

              Я не ищу легких путей :)
              Когда то я кодил на lisp, наверно оттуда привычка стараться закодировать одной строчкой.
              Плюс я всегда оптимизирую код по максимуму, запись времянки добавит дополнительные дисковые операции в систему ... :)
              И лучше один раз отмучиться и решить проблему от и до, тем более аналогов этому всему я в инете не нашел, не в ру не в енг.
              Эта строка всего лишь маленький кусок кода полностью автоматизированной системы звукового оформления организаций.
              Плюс этот модуль был бы крайне актуален интернет радиостанциям и т.п.
              Этот код позволяет гарантировать, что на конечном устройстве - выходе звуковой карты, присутствует сигнал, то есть идет трансляция.
              При пропадании сигнала - запуск скрипта меняющего источник входного сигнала, посылка сообщения о сбое на линии и т.д. :)
              Так что лучше добиться надежной работы без костылей :)

              • sox stat, !*! михалыч, 16:43 , 17-Окт-13 (7)
                • sox stat, !*! vfp7, 17:02 , 17-Окт-13 (8)
                  Это решение через костыль.
                  В соксе засада, что результат своей работы ( директивы stat ), он отдает в stdout, минуя pipe
                  Я не могу добраться до результата работы stat

                  Это результат на экране:

                  Input File     : '/dev/dsp3.1' (ossdsp)
                  Channels       : 2
                  Sample Rate    : 48000
                  Precision      : 16-bit
                  Sample Encoding: 16-bit Signed Integer PCM

                  In:0.00% 00:00:03.07 [00:00:00.00] Out:144k  [======|=====!] Hd:0.0 Clip:0
                  Samples read:            294912
                  Length (seconds):      3.072000
                  Scaled by:         2147483647.0
                  Maximum amplitude:     0.999969
                  Minimum amplitude:    -1.000000
                  Midline amplitude:    -0.000015
                  Mean    norm:          0.338436
                  Mean    amplitude:    -0.000044
                  RMS     amplitude:     0.418896
                  Maximum delta:         1.768463
                  Minimum delta:         0.000000
                  Mean    delta:         0.254371
                  RMS     delta:         0.320575
                  Rough   frequency:         5846
                  Volume adjustment:        1.000
                  Done.

                  И я не могу завернуть в grep этот вывод, что бы выщипнуть всего одно значение от сюда - 1.768463

                  • sox stat, !*! Andrey Mitrofanov, 17:23 , 17-Окт-13 (9)
                    • sox stat, !*! Andrey Mitrofanov, 17:26 , 17-Окт-13 (10)
                    • sox stat, !*! михалыч, 17:51 , 17-Окт-13 (12)
                      • sox stat, !*! vfp7, 18:46 , 17-Окт-13 (13)
                        >> Может быть в *stderr* ? Тогда 2>&1
                        > А всё-таки
                        >> Если он, паршивец,
                        >>> отдает в stdout
                        > тогда вроде как наоборот? 1>&2
                        > Может попробовать |tee прикрутить?
                        > Да, нахрен!
                        > Перекрываем кислород полностью, пусть теперь потрепыхается!
                        > Закрывает ему стандартный вывод >&-  ))))

                        Когда перекрыл кислород, то заметил что вывод stat отрабатывает ДО момента перекрывания кислорода.

                        Честно говоря я уже начал буксовать, похоже что sox stat сперва выдает на экран свои данные, и только после этого передает управление далее ...
                        Моих познаний здесь не хватит ...

                        FreeBSD 9.1-RELEASE-p6 Generic x64, минимальные вмешательства в систему - это если кто то захочет повторить ситуацию.

                        • sox stat, !*! михалыч, 19:37 , 17-Окт-13 (14)
                        • sox stat, !*! vfp7, 09:09 , 22-Окт-13 (15)
                          >[оверквотинг удален]
                          >   Using a null file to output  audio  
                          > amounts  to  discarding  the
                          >            
                          >   audio and is useful mainly with effects that produce
                          > information
                          >            
                          >   about the audio instead of affecting it (such  
                          > as  noiseprof  or
                          >            
                          >   stat).

                          Этот код тестовый, пробую все варианты, но вывод на экран так и не удалось перехватить :(

    • sox stat, !*! Andrey Mitrofanov, 17:27 , 17-Окт-13 (11)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру