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

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