Übertragen Sie einen Bildschirm mit ffmpeg über http

Übertragen Sie einen Bildschirm mit ffmpeg über http

In diesen Quarantänetagen wollte ich meinen Desktop mit Freunden teilen, um ihnen in der Praxis zu erklären, was Git ist. Die Probleme sind:

  • Ich verwende FreeBSD.
  • Wir befinden uns hinter NATs. Aber ich habe einen VPS mit VPN (Wireguard), der für diese Zwecke konfiguriert ist.
  • Ich möchte kostenlose und einfache („suckless“) Software verwenden.

Ich habe mich entschieden, meinen Desktop freizugeben ffmpeg -f x11grabund die Ausgabe auf jeden Port zu streamen. Da wir uns in einem virtuellen Netzwerk befinden, können Freunde diesen Stream problemlos mit jedem VLC, MPV oder Webbrowser ansehen. Das Problem trat auf, als ich begriff, dass ffmpeg nicht direkt auf http ausgeben kann. Ich habe viele Lösungen ausprobiert, wie das Senden über RTMP an YouTube Live Streaming (Overhead und kein kostenloser Dienst) und das Aufteilen und Teilen mit HLS-Protokoll und HTTP-Server und bin bei HLS stehen geblieben.

Mein ffmpeg-Start:

ffmpeg -f x11grab -video_size 1920x1080 -i :0 -c:v h264 -f hls -hls_time 1 -g 15 stream.m3u8

Und mpv, mit dem ich teste:

mpv --no-cache --no-resume-playback stream.m3u8

Ich sehe, dass es eine Latenz von etwa 10-15 Sekunden gibt. Selbst wenn ich die Videobitrate auf ein halbes Megabyte einstelle, gibt es eine ähnliche Latenz (und natürlich eine schlechte Qualität), was bedeuten kann, dass das Problem nicht an der Bandbreite liegt [und ich habe nicht einmal angefangen, es irgendwohin weiter als meinen lokalen PC zu senden!].

Ich habe einen ... gefundenSO Antwortwo ein Benutzer sagt, dass HLS das falsche Protokoll für niedrige Latenz ist. Ich habe viele Blogs, Wikipedia-Artikel und ffmpeg Wikipedia gelesen (StreamingGuide), aber ich konnte keine Lösung finden. Wie kann ich die Latenz verringern oder welche Software kann ich stattdessen verwenden (ffmpeg ist vorzuziehen), damit meine Freunde meinen Desktop mit einer Latenz von wenigen Sekunden sehen können, wie es bei Discord und Skype der Fall ist? Es ist erwähnenswert: Ich brauche keine gute Qualität und Aussetzer sind in Ordnung, da ich ein Terminalfenster freigeben werde.

verwandte Informationen