ffmpeg: ARD HD Stream in RTP wandeln

GrayMH

Newbie
Registriert
Sep. 2022
Beiträge
4
Hallo,
ich möchte gerne mit ffmpeg den ARD HD IPTV Stream in ein RTP-Stream wandeln.

Dazu habe ich folgenden Befehl genutzt:
ffmpeg -i http://mcdn.daserste.de/daserste/de/master.m3u8 -vcodec copy -acodec copy -f rtp_mpegts rtp://224.2.2.2:2234?pkt_size=1316

Soweit kann den RTP-Stream auch Lokal empfangen, aber es rückelt.

Gibt es einen Befehl, damit ffmpeg den Eingangsstream ein paar Sekunden puffert?

Oder einen anderen Lösungsansatz?
 
Probier mal
-b:v 8M
Edit:
Oh. Ard..
eher illegal oder?
 
Zuletzt bearbeitet:
madmax2010 schrieb:
eher illegal oder?
Warum?
Ist doch im GEZ-Zwangsabo enthalten.


Alternativ könntest du den Stream auch in einer Datei speichern und (ggf. Zeitversetzt) in einem anderen Prozess senden.

Ein Ruckeln wegen zu hoher Prozessorlast, Netzwerk etc. ist ausgeschlossen?

Den Inputstream kann z.B. mit -rtbufsize vor dem Inputfile gepuffert werden.

Je nach Quali z.B. 1G
 
Was ist denn am Ende der Kette dein Abspielgerät für den RTP-Stream? Der müsste doch eigentlich selbst etwas puffern, schon um Netzwerkschwankungen auszugleichen. Den Puffer im Transcoder (ffmpeg) will man eigentlich so klein wie möglich halten um die Latenz nicht zu erhöhen. Kannst du andere Quellen testen um zu sehen ob die ruckeln? Ruckelt es wenn du den RTP-Stream mit einem Software-Player abspielst?

-b:v ist die Bitrate für den Videostream und hier Käse da der Videostream ja nicht neu enkodiert werden soll (-vcodec copy).

mojitomay schrieb:
Warum?
Ist doch im GEZ-Zwangsabo enthalten.
Jo eben, ist doch der einzige Vorteil von dem Kram, dass der selbst in HD Kopierschutzfrei ist. Und dank Internet-Streams auch mit stinknormalen Videoplayern abspielbar. Rechtfertigt u.a. auch die Zwangsabgabe trotz dessen dass man kein Fernsehgerät hat.
 
Danke schon mal für die Tipps.

Mit dem -b:v 8M, gibt es keine Veränderung.
ffmpeg -i http://mcdn.daserste.de/daserste/de/master.m3u8 -b:v 8M -c copy -f rtp_mpegts rtp://224.2.2.2:2234?pkt_size=1316


Ein Ruckeln wegen zu hoher Prozessorlast, Netzwerk etc. ist ausgeschlossen? Ja
Bin direkt mit einen Netzwerkkabel Gigabit verbunden.
Direkt kann ich den ARD Stream auch rückfrei sehen.
Die CPU i7 th11 ist nicht mal zu 10% ausgelastet, ich codiere den H.264 auch nicht neu.

Bringt leider auch nicht die Lösung,
ffmpeg -rtbufsize 100M -i http://mcdn.daserste.de/daserste/de/master.m3u8 -c copy -f rtp_mpegts rtp://224.2.2.2:2234?pkt_size=1316


Alternativ könntest du den Stream auch in einer Datei speichern und (ggf. Zeitversetzt) in einem anderen Prozess senden.
Da fehlen mir aktuell die Befehle für.
Ergänzung ()

Ich kann den ARD Stream rückelfrei speichern.
ffmpeg -i http://mcdn.daserste.de/daserste/de/master.m3u8 -c copy -f mpegts out.ts

Wenn ich diesen dann "abspiele" ist es auch ruckelfrei.
ffmpeg -stream_loop -1 -re -i out.ts -c copy -f rtp_mpegts rtp://224.2.2.2:2234?pkt_size=1316

Aber ich benötige einen Live Betrieb, 5 sek. Verzögerung stören mich aber nicht.

Ich habe etwas gelesen von thread_queue_size, aber ich verstehe es nicht. Was ist ein normaler Wert dafür?
Ergänzung ()

Marco01_809 schrieb:
Was ist denn am Ende der Kette dein Abspielgerät für den RTP-Stream? Der müsste doch eigentlich selbst etwas puffern, schon um Netzwerkschwankungen auszugleichen. Den Puffer im Transcoder (ffmpeg) will man eigentlich so klein wie möglich halten um die Latenz nicht zu erhöhen. Kannst du andere Quellen testen um zu sehen ob die ruckeln? Ruckelt es wenn du den RTP-Stream mit einem Software-Player abspielst?

-b:v ist die Bitrate für den Videostream und hier Käse da der Videostream ja nicht neu enkodiert werden soll (-vcodec copy).


Jo eben, ist doch der einzige Vorteil von dem Kram, dass der selbst in HD Kopierschutzfrei ist. Und dank Internet-Streams auch mit stinknormalen Videoplayern abspielbar. Rechtfertigt u.a. auch die Zwangsabgabe trotz dessen dass man kein Fernsehgerät hat.
Wenn ich mit einem VLC Player den "http://mcdn.daserste.de/daserste/de/master.m3u8" Stream abspiele ruckelt es nicht.

Bei dem "ffmpeg -stream_loop -1 -re -i out.ts -c copy -f rtp_mpegts rtp://224.2.2.2:2234?pkt_size=1316" ruckelt es auch nicht.

Der Live Betrieb ist das Problem, auch mit dem VLC Player.
 
Zuletzt bearbeitet:
Ich habe mal getestet.

mit folgenden Eingaben kann ich ruckelfrei streamen und den stream ansehen (lokal).

Stream starten:
Bash:
ffmpeg -re -i http://mcdn.daserste.de/daserste/de/master.m3u8 -c copy -f rtp_mpegts rtp://127.0.0.1:1234

Stream ansehen:

Bash:
ffplay rtp://127.0.0.1:1234

Man beachte das -re, ohne diese Flag funktioniert es nicht.

https://trac.ffmpeg.org/wiki/StreamingGuide


Falls du noch mehr solcher Video/Streamquellen hast, wäre ich daran interessiert. (ZDF, ARTE etc...)
 
  • Gefällt mir
Reaktionen: Marco01_809
Ich habe mir überlegt, das es besser ist den RTP Stream über eine seperate Netzwerkkarte zu streamen. Leider schaffe ich es nicht den ffmpeg Befehl anzupassen.

eth0 ist mit dem Internet-Router verbunden
eth1 soll für den RTP Ausgangsstream genutzt werden

Ist es nötig eth1 eine feste IP zu geben, da dort kein DHCP läuft? Oder ist es egal, das es ein Multicast Stream ist?
 
Zurück
Oben