Импорт потоков из M3U
При первичной настройке Flussonic Media Server может возникнуть необходимость завести большое количество потоков. Например, это может быть список мультикаст-групп или другие HTTP MPEG-TS / HLS / RTMP источники.
В интерфейсе такой функции нет, но Flussonic Media Server предоставляет API для импорта и несложный формат конфигурационного файла.
С помощью небольшого python-скрипта можно сконвертировать m3u-плейлист в конфигурацию Flussonic Media Server и импортировать вручную, вставив текст в /etc/flussonic/flussonic.conf
, или используя curl и HTTP API.
Для начала, скачаем скрипт m3u_to_flussonic.py
с ресурса gist.github.com:
wget -O m3u_to_flussonic.py https://gist.githubusercontent.com/klyushkov/bf95dcf66ba99ba9a5d8e5eb71db75ae/usr/src/app/src/img/f998977e3596c11129f31470936a58145a68e180/m3u_to_flussonic.py
Затем запускаем его, используя python (большинство дистрибутивов поставляются с установленным python, а если нет, то установите его самостоятельно apt install -y python-minimal
)
python m3u_to_flussonic.py example1.m3u
В результате вы должны получить следующий вывод:
root@flussonic:~# python m3u_to_flussonic.py example1.m3u
stream _BBC_World {
url tshttp://example.com/stream/to/video2;
}
stream _CNN_International {
url tshttp://example.com/stream/to/video2;
}
stream Arirang {
url tshttp://example.com/stream/to/video3;
}
stream ORT {
url tshttp://example.com/ort/mpegts;
}
stream ORT_HLS {
url hls://example.com/ort/index.m3u8;
}
stream stream6 {
url hls://example.com/streamwithoutname/video.m3u8;
}
stream RTMP_stream {
url rtmp://example.com/static/stream;
}
Пример на другом файле:
root@flussonic:~# python m3u_to_flussonic.py example2.m3u
stream stream1 {
url udp://239.255.0.1:5500;;
}
stream stream2 {
url udp://239.255.0.2:5500;;
}
stream stream3 {
url udp://239.255.0.3:5500;;
}
stream stream4 {
url udp://239.255.0.4:5500;;
}
stream stream5 {
url udp://239.255.0.5:5500;;
}
Эту конфигурацию нужно скопировать и вставить в файл /etc/flussonic/flussonic.conf
, после чего перечитать конфигурацию командой service flussonic reload
Так же можно применить конфигурацию через API, это может быть удобно, если вы хотите завести потоки на несколько серверов:
root@flussonic2:~# curl -u flussonic:letmein! --data-binary "$(python m3u_to_flussonic.py example2.m3u)" http://flussonic:80/flussonic/api/config/stream_create
{"success":true}
Где:
flussonic:letmein!
— логин и пароль от вашего Flussonic Media Server.example1.m3u
— импортируемый файл.http://flussonic:80
— адрес вашего сервера.
{"success":true}
означает, что импорт прошел успешно.
Кстати, m3u_to_flussonic.py
умеет работать не только с локальными файлами, но и с удаленными по http://
:
root@flussonic:~# python m3u_to_flussonic.py http://example.com/example2.m3u
<...>
Примеры файлов
Если у вас нету под рукой m3u плейлиста, можете потренироваться на этих:
example1.m3u
#EXTM3U
#EXTINF:0 tvg-name="BBC" audio-track="eng" tvg-logo="http://example.com/BBC.png", BBC World
http://example.com/stream/to/video2
#EXTINF:0 tvg-name="CNN" audio-track="rus" group-title="News", CNN International
http://example.com/stream/to/video2
#EXTINF:0,Arirang
http://example.com/stream/to/video3
#EXTINF:-1,ORT
http://example.com/ort/mpegts
#EXTINF:-1,ORT_HLS
http://example.com/ort/index.m3u8
http://example.com/streamwithoutname/video.m3u8
#EXTINF:-1,RTMP_stream
rtmp://example.com/static/stream
example2.m3u
udp://239.255.0.1:5500
udp://239.255.0.2:5500
udp://239.255.0.3:5500
udp://239.255.0.4:5500
udp://239.255.0.5:5500