+ +
ffmpeg/streamproxy [ Files ]
+ + +NAME
+streamproxy - проксирование аудиопотока на Icecast ++
VERSION
+1.0 ++
DESCRIPTION
+Сценарий принимает аудиопоток с оборудования, по UDP или TCP, + и ретранслирует поток на сервер радиовещания icecast для + получения сигнала другими программами и прослушивания аудио конечным + пользователем. +
+ +Проксирование будет доступно только при задании в файле настроек опции + <proxy>1</proxy> +
+ + +USAGE
+streamproxy <файл настроек> ++
ARGUMENTS
+- <файл настроек> - xml-файл с описанием входящего и выходящего потоков и + правилами фрагментирования записей. + +
+ +
streamproxy/readXML [ Functions ]
+ +[ Top ] [ streamproxy ] [ Functions ]
+NAME
+readXML - получение значения опции из файла настроек ++
USAGE
+readXML <опция> <файл> ++
ARGUMENTS
+- опция - имя опции + +
- файл - xml-файл с настройками + +
RESULT
+Значение параметра при наличии искомой опции в xml-файле или значение по + умолчанию, которое задаётся при инициализации переменной config. ++
SOURCE
+72 readXML() { +73 \grep -oPm1 "(?<=<$1>)[^<]+" "$2" +74 } ++ +
+ +
streamproxy/proxyCMD [ Functions ]
+ +[ Top ] [ streamproxy ] [ Functions ]
+NAME
+proxyCMD - создание команды для передачи аудиопотока ++
DESCRIPTION
+Процедура составляет команду ffmpeg на основе конфигурационного файла +
+RESULT
+Команда ffmpeg, которую можно передать на выполнение. ++
SOURCE
+90 proxyCMD() { + 91 STREAM=$(readXML stream "$XML") + 92 ICECAST="$(readXML icecast $XML)/$(readXML mountpoint $XML)" + 93 ICENAME="$(readXML channel_name $XML)" + 94 ICEDESC="$(readXML channel_descr $XML)" + 95 FORMAT="$(readXML input_format $XML)" + 96 + 97 echo ffmpeg -i "$STREAM" \ + 98 -fi "$FORMAT" \ + 99 -legacy_icecast 1 \ +100 -content_type audio/mpeg \ +101 -ice_name "$ICENAME" \ +102 -ice_description "$ICEDESC" \ +103 icecast://source:$ICECAST +104 } ++ +
+ +
streamproxy/main [ Toplevel ]
+ +[ Top ] [ streamproxy ] [ Toplevel ]
+NAME
+streamproxy ++
SOURCE
+115 #Проверка аргументов +116 if [ -z $1 ]; then +117 echo "USAGE: $0 <xml>" +118 exit 1 +119 fi +120 +121 #Файл настроек +122 XML="$1" +123 +124 #Проверка использования прокси +125 PROXY=$(readXML proxy "$XML") +126 +127 if [ "$PROXY" == 1 ]; then +128 proxyCMD +129 fi ++ +