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

    А если так ущипнуть, добавить после grep'а
    | awk '{print $3}'
    или
    | awk -F: '{print $2}'

    • 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)
        >[оверквотинг удален]
        >>> Вариант добавить в конце | grep 'Maximum delta' не прокатывает, sox ждет
        >>> продолжения команд.
        >>> Заранее спасибо.
        >> А если так ущипнуть, добавить после 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, !*! 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)
                >[оверквотинг удален]
                > более аналогов этому всему я в инете не нашел, не в
                > ру не в енг.
                > Эта строка всего лишь маленький кусок кода полностью автоматизированной системы звукового
                > оформления организаций.
                > Плюс этот модуль был бы крайне актуален интернет радиостанциям и т.п.
                > Этот код позволяет гарантировать, что на конечном устройстве - выходе звуковой карты,
                > присутствует сигнал, то есть идет трансляция.
                > При пропадании сигнала - запуск скрипта меняющего источник входного сигнала, посылка сообщения
                > о сбое на линии и т.д. :)
                > Так что лучше добиться надежной работы без костылей :)

                А тут ==> http://www.opennet.dev/openforum/vsluhforumID9/9749.html что, не пригодилось?
                pavlinux там опечатался, чуть подправив всё собирается как надо.


                #!/bin/sh

                avs="/tmp/avs"

                cat > ${avs}.c <<EOT
                #include <stdio.h>
                main() {
                    long a, b, c;
                    a = b = c = 0;
                    for ( a = 0; b = getchar(), b != EOF; ++a, c+=b );
                    printf ("%ld\n", c/a);
                }
                EOT

                gcc ${avs}.c -o ${avs}
                rm ${avs}.c
                head -c1000 /dev/dsp0.1 | ${avs}

                И всё же я не понимаю, в чём у вас с sox засада?

                • 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)
                    > Это решение через костыль.
                    > В соксе засада, что результат своей работы ( директивы stat ), он
                    > отдает в stdout, минуя pipe

                    Может быть в *stderr* ? Тогда 2>&1 должен сапсти отца демогратии.

                    Если он, паршивец, конечно, не пишет в tty (или как оно там)... Хотя неее, это ж не ДОС.


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

                    Ну, как завернёшь, выбрось греп и делай, как большой

                    2>&1 |awk '/^Maximum delta:/{print$NF}'

                    • sox stat, !*! Andrey Mitrofanov, 17:26 , 17-Окт-13 (10)
                      > Может быть в *stderr* ? Тогда 2>&1 должен сапсти отца демогратии.
                      > Если он, паршивец, конечно, не пишет в tty (или как оно там)...
                      > Хотя неее, это ж не ДОС.

                      //Имел в виду INT 10h против STDOUT в DOS, если кому.

                      > Ну, как завернёшь, выбрось греп и делай, как большой
                      > 2>&1 |awk '/^Maximum delta:/{print$NF}'

                      Второй приём (да, когда в руках молоток...)

                      2>&1 |sed -n 's/^Maximum delta: *//p'

                    • sox stat, !*! михалыч, 17:51 , 17-Окт-13 (12)
                      > Может быть в *stderr* ? Тогда 2>&1

                      А всё-таки
                      > Если он, паршивец,
                      >> отдает в stdout

                      тогда вроде как наоборот? 1>&2

                      Может попробовать |tee прикрутить?

                      Да, нахрен!
                      Перекрываем кислород полностью, пусть теперь потрепыхается!
                      Закрывает ему стандартный вывод >&-  ))))

                      • 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 -V0 -tossdsp -r48000 -c2 /dev/dsp3.1 -traw /dev/null stat trim 0 3

                          А зачем здесь /dev/null ?

                          -n, --null
                                        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, !*! 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)
      > А если так ущипнуть, добавить после grep'а
      > | awk

      Useless use of grep! (google://useless use of cat)




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

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