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
82 readXML() { 83 \grep -oPm1 "(?<=<$1>)[^<]+" "$2" 84 }
streamproxy/proxyCMD [ Functions ]
[ Top ] [ streamproxy ] [ Functions ]
NAME
proxyCMD - создание команды для передачи аудиопотока
DESCRIPTION
Процедура составляет команду ffmpeg на основе конфигурационного файла
RESULT
Команда ffmpeg, которую можно передать на выполнение.
SOURCE
100 proxyCMD() { 101 STREAM=$(readXML stream "$XML") 102 ICECAST="$(readXML icecast $XML)/$(readXML mountpoint $XML)" 103 ICENAME="$(readXML channel_name $XML)" 104 ICEDESC="$(readXML channel_descr $XML)" 105 FORMAT="$(readXML input_format $XML)" 106 107 echo ffmpeg -i "$STREAM" \ 108 -fi "$FORMAT" \ 109 -legacy_icecast 1 \ 110 -content_type audio/mpeg \ 111 -ice_name "$ICENAME" \ 112 -ice_description "$ICEDESC" \ 113 icecast://source:$ICECAST 114 }
streamproxy/main [ Toplevel ]
[ Top ] [ streamproxy ] [ Toplevel ]
NAME
streamproxy
SOURCE
125 #Проверка аргументов 126 if [ -z $1 ]; then 127 echo "USAGE: $0 <xml>" 128 exit 1 129 fi 130 131 #Файл настроек 132 XML="$1" 133 134 #Проверка использования прокси 135 PROXY=$(readXML proxy "$XML") 136 137 if [ "$PROXY" == 1 ]; then 138 proxyCMD 139 fi