January 28th, 2015

Book

UDP streaming HOWTO

Идея такая: если видео по вайфаю играется и полосы хватает, но периодически какая-то жопа, можно попробовать UDP-стриминг вместо HTTP или, не дай бог, файлошарового протокола (по неизвестным мне причинам, все файлошаровые протоколы работают из рук вон плохо при аномалиях в канале). UDP устойчив к head of line blocking по определению, т.е. при аномалиях на приёмной стороне просто будут проскакивать квадратики.

У нас будет пиздатый стриминг: никаких вонючих говнопротоколов проприетарных, никакой вонючей перекодировки, никакого вонючего TCP, никакого говнософта: только VLC или cvlc на файлосервере, VLC на ноуте,  RFC2326 RTSP+ RFC3550 RTP. Будем перестримливать c HTTP в RTP/UDP cтрим c ётуба с танцем маленьких лебедей.

На сервере пускаем (под нерутом, разумеется). Можно то же самое гуем, если хочется.

cvlc -vvv --sout "#rtp{sdp=rtsp://:8554/}" "https://www.youtube.com/watch?feature=player_embedded&v=C2JWhiUVBYc"

8554 на случай говнолинукса на сервере - означает, что дефолтовый порт 554 мы не хотим использовать, т.к. порты ниже 1024 требуют рута

На клиенте пускаем vlc rtsp://192.168.0.9/

Всё.

Если лебеди заработают (там стрим ~300 кбит всего), можно пробовать что-то другое, файлики тоже можно указывать, разумеется. Если желаемое кино, не шедшее по файлошаре, пойдёт по RTSP - значит, апгрейд вайфай-роутера и сопровождающая его победа над жабой откладываются, можно поискать решения для цивилизованного стриминга, чтобы не лазить коммандлайном, с работающей перемоткой и т.п. А может, есть и решения, позволяющие не тащить за собой целый cvlc.