Multicast Video: Unterschied zwischen den Versionen
Lemmi (Diskussion | Beiträge) |
Lemmi (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
== Lektüre == | |||
* https://en.wikipedia.org/wiki/Multicast | |||
* https://en.wikipedia.org/wiki/Multicast_address | |||
* https://ffmpeg.org/ffmpeg-protocols.html#udp | |||
* https://obsproject.com/forum/resources/obs-studio-send-an-udp-stream-to-a-second-pc-using-obs.455/ | |||
== Streamen == | == Streamen == | ||
Version vom 7. Dezember 2020, 13:19 Uhr
Lektüre
- https://en.wikipedia.org/wiki/Multicast
- https://en.wikipedia.org/wiki/Multicast_address
- https://ffmpeg.org/ffmpeg-protocols.html#udp
- https://obsproject.com/forum/resources/obs-studio-send-an-udp-stream-to-a-second-pc-using-obs.455/
Streamen
ffmpeg
ffmpeg -re -i $INPUT -vcodec copy -acodec copy -f mpegts 'udp://[ff02::1234]:5678?pkt_size=1440'
-re
- Aus der Manpage: "Read input at native frame rate."
- Nur nötig, falls man eine Datei abspielen möchte.
-i $INPUT
- Eine Datei, oder ein anderer Stream.
-vcodec copy -acodec copy
- Video und Audio direkt kopieren. Man kann hier natürlich auch andere Encoder verwenden.
-f mpegts
- Für das Streamen muss ein geeignetes Containerformat benutzt werden.
mpegts
bietet sich da an, weil es so gut wie alles unterstützt. 'udp://[ff02::1234]:5678?pkt_size=1440'
- Das ist die Zieladresse, an die gestreamt werden soll. Hier geht es an die IPv6 Multicastgruppe 1234 auf port 5678. Prinzipiell ist hier viel möglich. Es können hier Unicast- und Multicastaddressen angegeben werden.
pkt_size=1440
ist ein wichtiger Zusatz, um die Paketgröße zu beschränken, damit die Pakete nicht fragmentiert werden. Bitte im eigenen Netz mittcpdump
überprüfen.- Weitere Optionen gibt es in de ffmpeg Dokumentation: https://ffmpeg.org/ffmpeg-protocols.html#udp
Multicast Stream direkt an Youtube weiterleiten
Wenn im Netzwerk schon (z.B. von OBS, Webcam, SatIP) ein passender Stream eingespeist wird, kann dieser mit folgendem Befehl an Youtube geschickt werden:
ffmpeg -i 'udp://[ff02::666]:4242' -vcodec copy -acodec copy -f flv "rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY"
OBS
OBS: Variante Custom-Stream-Service
In OBS kann mit dem selben URL Format wie in ffmpeg (siehe oben) gearbeitet werden. Einfach im Stream Menu auf Custom Service stellen und als server ein Multicastendpunkt angeben. Auch hier funkionieren die erweiterten Optionen von ffmpeg.
Hier ein Screenshot mit udp://[ff02::1337]:1337?pkt_size=512
(verwendet bitte eine andere Paketgröße) als Endpunkt:
OBS: Variante Recording mit Custom Output (FFMPEG)
Statt in eine Datei zu schreiben, kann man auch im Recording Menu an ffmpeg übergeben und an eine URL Streamen. Dies kann Sinnvoll sein, wenn man einerseits an eine Streamingplattform streamen will und im lokalen Netz einen anderen Stream verteilen möchte. Dabei ist aber folgendes zu beachten:
- Das Container Format muss wieder sinnvoll sein. Also wie oben eignet sich in der Regel
mpegts
. - Es kann scheinbar bisher nicht der Streamencoder als Quelle benutzt werden -> Das Video wird 2 mal encoded!
- Unter Umständen keine Hardwarebeschleunigung, auch wenn diese im Streamprofil funktioniert.
Der Vorschlag stammt von dieser Seite: https://obsproject.com/forum/resources/obs-studio-send-an-udp-stream-to-a-second-pc-using-obs.455/
Abspielen
mpv
mpv 'udp://[ff02::1337]:1337'
mpv 'udp://224.0.0.15:9999'
VLC
VLC hat eine etwas andere Syntax. Hier muss immer das @
dabei stehen!
vlc 'udp://@[ff02::1337%eth0]:1337'
Interface muss angegeben werden!
vlc 'udp://@224.0.0.15:9999'
Geht natürlich auch in der GUI: