[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]

Файл: 223396c260a96b73d1aac10e1d6e6d44.jpg -(434 KB, 800x600, 223396c260a96b73d1aac10e1d6e6d44.jpg)
434 No.473610  

Oh hi.
Я перепилил свою стримилку, теперь задержка может опускаться до 0.5 секунд, если настроить броадкастер чтобы он делал libx264-кодирование с -preset ultrafast и -tune zerolatency. Особенно если без звука. В среднем же, без специальной настройки - порядка 1-5 секунд. Чуть меньше, чем у тех же твитчей с их хард-лимитом в 20-60 секунд, но (и благодоря чему получается низкая задержка) -- никаких перекодировок. Как поток пришлют, так его стримилка и разошлёт всем кто подписан на rtmp-сообщения. Ещё один возможный дравбек - это долгая "буферизация" стрима, которая на самом деле не буферизация вовсе, а ожидание первого кейфрейма в потоке, что позволяет синхронизироваться с потоком и получить те самые 0.5 секунды идеальной задержки.

Может кому пригодится.

video.eientei.org
github.com/eientei/videostreamer

Пожелания и предложения крайне желательны. Особенно в форме патчей.

Краткий гайд по стриму:
(Unix/ffmpeg):

ffmpeg -r 30 -f x11grab -s 1366x768 -i :0.0 -f pulse -ac 2 -i loopback.monitor -vcodec libx264 -preset ultrafast -tune zerolatency -pix_fmt yuv420p -s 1366x768 -ar 44100 -threads 0 -f flv rtmp://video.eientei.org/live/128c853bb99bfeb971f9f766c92326c8

Здесь:

  • -f x11grab -s 1366x768 -i :0.0 -- разрешение экрана на нулевом дисплее нулевого X-сервера
  • -f pulse -ac 2 -i loopback.monitor -- монитор девайса loopback пульсы (будут браться все звуки что играют через loopback); loopback - название синка, который хотим захватывать.
  • -preset ultrafast -tune zerolatency -- полезные оптимизации libx264-кодека
  • -s 1366x768 -- разрешение стрима
  • 128c853bb99bfeb971f9f766c92326c8 -- приватный ключ стрима (выдаётся после примитивной регистрации, виден в профиле)

(Windows/OBS):

  • Broadcast Settings -> Mode: Live Stream
  • Broadcast Settings -> Streaming Service: Custom
  • Broadcast Settings -> FMS URL: rtmp://video.eientei.org/live
  • Broadcast Settings -> Play Path/Stream key: 128c853bb99bfeb971f9f766c92326c8
  • Broadcast Settings -> Auto-Reconnect: true (просто чтобы стрим переподключался сам, если я начну опять крутить какую-нибудь педальку и всё отвалится)
  • Advanced -> Video -> x264 CPU Prset: Ultrafast (будет жрать больше трафика, будет меньше задержка). Если траффик - проблема, можно опустить до Superfast или Veryfast дурацкие названия, но что поделать
  • Advanced -> Video -> Custom x264 Encoder Settings: tune=zerolatency

Остальное по вкусу. Рекомендую большие разрешения (>720p) ужимать в 1.25-полтора-1.75-два-раза, в зависимости от исходного разрешения, чтобы достичь оптимального 720p.




[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]