LINUX.ORG.RU

Сервер для ретрансляции MPEG-TS потока

 ,


0

1

Столкнулся с такой задачей - есть некий источник видео и его надо сделать доступным по http в виде mpegts потока (заранее приношу извинения, если тут терминологическая каша).

Публиковать его, очевидно, можно ffmpeg'ом, в простейшем случае как-то так

ffmpeg -i /dev/urandom -f mpegts http://whatever/foo/bar

Но непонятно, что можно использовать в качестве сервера, который будет этот поток принимать и ретранслировать. Беглый поиск выдает только коммерческие комбайны, вроде Wowza и Flussonic, есть nginx-ts-module, но он по факту генерит HLS и DASH из ts потока.

Хотя вроде магии там нет - публикатор просто делает POST запрос и постоянно шлёт данные, а плеер, соответственно, GET и постоянно получает их. Т.е. запилить кривой, но более-менее рабочий сервер можно и самому, но прыгать по граблям на своем велосипеде не хочется. Или может есть какой универсальный сервер, в котором такое реализовано?

С сервером я тебе не подскажу, но если ты собрался указывать -f mpegts без -c copy, то ffmpeg по дефолту будет кодировать в mpeg2video -q31 (самое низкое качество), mp2 audio 384k. Соответственно, если ты хочешь нормальное качество, надо задать что-то адекватное (для SD):

-c:v libx264 -preset medium -b:v 1500k -maxrate 5000k -bufsize 1500k -vsync cfr -g 125 -pix_fmt yuv420p -map_metadata -1 -map_chapters -1 -c:a aac -q:a 1.5 -cutoff 16500 -af aformat=sample_fmts=flt,aresample=44100:resampler=soxr -ac 2 -async 1 -sn -f mpegts

anonymous ()