ffmpeg/streamproxy [ Files ]

[ Top ] [ Files ]

NAME

    streamproxy - проксирование аудиопотока на Icecast

VERSION

    1.0

DESCRIPTION

Сценарий принимает аудиопоток с оборудования, по UDP или TCP, и ретранслирует поток на сервер радиовещания icecast для получения сигнала другими программами и прослушивания аудио конечным пользователем.

Проксирование будет доступно только при задании в файле настроек опции <proxy>1</proxy>

USAGE

    streamproxy <файл настроек>

ARGUMENTS


streamproxy/readXML [ Functions ]

[ Top ] [ streamproxy ] [ Functions ]

NAME

    readXML - получение значения опции из файла настроек

USAGE

    readXML <опция> <файл>

ARGUMENTS

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