The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"sox stat"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"sox stat"  +/
Сообщение от vfp7 email(ok) on 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 ждет продолжения команд.
Заранее спасибо.

Ответить | Правка | Cообщить модератору

Оглавление

  • sox stat, михалыч, 14:14 , 17-Окт-13, (1)  
    • sox stat, vfp7, 14:51 , 17-Окт-13, (2)  
      • sox stat, михалыч, 15:33 , 17-Окт-13, (3)  
        • sox stat, vfp7, 16:16 , 17-Окт-13, (4)  
          • sox stat, михалыч, 16:20 , 17-Окт-13, (5)  
            • sox stat, vfp7, 16:33 , 17-Окт-13, (6)  
              • sox stat, михалыч, 16:43 , 17-Окт-13, (7)  
                • sox stat, vfp7, 17:02 , 17-Окт-13, (8)  
                  • 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)  
                        • sox stat, михалыч, 19:37 , 17-Окт-13, (14)  
                        • sox stat, vfp7, 09:09 , 22-Окт-13, (15)  
    • sox stat, Andrey Mitrofanov, 17:27 , 17-Окт-13, (11)  

Сообщения по теме [Сортировка по времени | RSS]


1. "sox stat"  +/
Сообщение от михалыч (ok) on 17-Окт-13, 14:14 
> Задача выщипнуть значение "1.768463" из строки "Maximum delta"
> Вариант добавить в конце | grep 'Maximum delta' не прокатывает, sox ждет
> продолжения команд.
> Заранее спасибо.

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "sox stat"  +/
Сообщение от михалыч (ok) on 17-Окт-13, 15:33 
>[оверквотинг удален]
>>> Вариант добавить в конце | 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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "sox stat"  +/
Сообщение от vfp7 email(ok) on 17-Окт-13, 16:16 
>[оверквотинг удален]
>>>> Заранее спасибо.
>>> А если так ущипнуть, добавить после 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

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "sox stat"  +/
Сообщение от михалыч (ok) on 17-Окт-13, 16:20 
Какой-то хитрый у вас терминал. Висит что-ли?
И как это вы так умудрились, у меня не получается!
Ну, а если записать вывод во временный файл и после взять оттуда?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "sox stat"  +/
Сообщение от vfp7 email(ok) on 17-Окт-13, 16:33 
> Какой-то хитрый у вас терминал. Висит что-ли?
> И как это вы так умудрились, у меня не получается!
> Ну, а если записать вывод во временный файл и после взять оттуда?

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "sox stat"  +/
Сообщение от михалыч (ok) on 17-Окт-13, 16:43 
>[оверквотинг удален]
> более аналогов этому всему я в инете не нашел, не в
> ру не в енг.
> Эта строка всего лишь маленький кусок кода полностью автоматизированной системы звукового
> оформления организаций.
> Плюс этот модуль был бы крайне актуален интернет радиостанциям и т.п.
> Этот код позволяет гарантировать, что на конечном устройстве - выходе звуковой карты,
> присутствует сигнал, то есть идет трансляция.
> При пропадании сигнала - запуск скрипта меняющего источник входного сигнала, посылка сообщения
> о сбое на линии и т.д. :)
> Так что лучше добиться надежной работы без костылей :)

А тут ==> http://www.opennet.me/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 засада?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "sox stat"  +/
Сообщение от vfp7 email(ok) on 17-Окт-13, 17:02 
Это решение через костыль.
В соксе засада, что результат своей работы ( директивы 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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "sox stat"  +/
Сообщение от Andrey Mitrofanov on 17-Окт-13, 17:23 
> Это решение через костыль.
> В соксе засада, что результат своей работы ( директивы stat ), он
> отдает в stdout, минуя pipe

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

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


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

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

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

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

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

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

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

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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "sox stat"  +/
Сообщение от михалыч (ok) on 17-Окт-13, 17:51 
> Может быть в *stderr* ? Тогда 2>&1

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

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

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

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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "sox stat"  +/
Сообщение от vfp7 (ok) on 17-Окт-13, 18:46 
>> Может быть в *stderr* ? Тогда 2>&1
> А всё-таки
>> Если он, паршивец,
>>> отдает в stdout
> тогда вроде как наоборот? 1>&2
> Может попробовать |tee прикрутить?
> Да, нахрен!
> Перекрываем кислород полностью, пусть теперь потрепыхается!
> Закрывает ему стандартный вывод >&-  ))))

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

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

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "sox stat"  +/
Сообщение от михалыч (ok) on 17-Окт-13, 19:37 
> 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).

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "sox stat"  +/
Сообщение от vfp7 email(ok) on 22-Окт-13, 09:09 
>[оверквотинг удален]
>   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).

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

11. "sox stat"  +/
Сообщение от Andrey Mitrofanov on 17-Окт-13, 17:27 
> А если так ущипнуть, добавить после grep'а
> | awk

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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