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