Posts by Xcoder

    jsffm : Danke für dein Feedback. Ohne solche Hinweise würde ich einfach nur das implementieren was ich lustig und gut finde.


    Bei den Video-Codierungen haben wir ein Dilemma: Von den via DVB ausgestrahlten Formate bleibt nur h264 als Schnittmenge übrig. Safari kann noch h265/hevc. Also müsste man den Video-Stream auch transcodieren was aber ordentlich CPU braucht. Ich stelle mir vor, dass ich da eine Auswahl mache: kopieren, kleine Datenrate oder gute Qualität.


    jsdeliver: Der Einfachheit halber kommt der HTML5 Player von diesem Server. Mir ist aber bewusst, dass das wohl nicht alle gut finden. Ich habe mich noch nicht damit auseinandergesetzt wie der Player integriert werden kann und darf (Lizenz).


    Stottern: ich habe mit aktuellem Firefox oder Safari keine Probleme. Da aber bis 2MB/s durchlaufen ist eine halbwegs gute Verbindung notwendig...

    jsffm   wolfi.m

    Danke für die ffmpeg logs. Die h264 Meldungen sind normal. Wichtig ist, dass irgendwann die hls ... Opening xxx for writing kommen. Ob es mit HEVC gehen kann weis ich nicht. Ich habe nur h264-Sener erfolgreich getestet.


    Sobald also ffmepg läuft sollten Dateien in /tmp/live-hls-buffer/ auftauchen. Der Thread in FFmpegThread prüft ob das nach 10 Sekunden passiert und startet andernfalls ffmpeg noch mal neu und wartet noch einmal 10 Sekunden.


    Die Komponente pages/stream_data.ecpp wartet auch max 10 Sekunden auf das Auftauchen der master*.m3u8. Solange zeigt der Player die 3 Punkte. Gelegentlich muss man die Seite neu laden damit der Player in die Gänge kommt.


    Gemäss euren letzten logs funktioniert ffmpeg wenn es manuel gestartet wurde. Nun fragt sich ob das auch so ist wenn vdr-live ffmpeg started. Bitte also immer prüffen ob in /tmp/live-hls-buffer/ Dateien auftauchen.


    Gruss, Xcoder

    jsffm ffmpeg hat nach 2 Versuchen jeweils nach 10 Sekunden noch keine /tmp/live-hls-buffer/master_1.m3u8 erstellt. Entweder liegt es an ffmpeg oder am streamdev-server...


    Was passiert wenn Du ffmpeg manuel startest:

    Code
    1. /tmp/ffmpeg -analyzeduration 2M -probesize 1M -i "http://localhost:3000/1" -map 0:v -map 0:a:0 -c:v copy -c:a aac -f hls -hls_time 1 -hls_start_number_source datetime -hls_allow_cache 0 -hls_flags delete_segments -master_pl_name master_1.m3u8 ffmpeg_1_data.m3u8


    Führ diesen Befehl mal einige Sekunden nach einem Neustart des VDR aus. Es sollten im aktuellen Verzeichniss einige Dateien erstellt werden, wobei die TS Dateien und die ffmpeg_1_data.m3u8 werden laufend durch neue ersetzt werden.

    wolfi.m der Pfad zu FFmpeg ist jetzt nur zu testzwecken so gewählt um möglichst wenig Konflikte zu haben. Da ich denke, dass es noch eine Weile dauert bis jede Distro mindestens 4.0 hat, muss ich mir da was überlegen. Am einfachsten währe wohl ein Konfigurierbarer Pfad.


    jsffm Die Dateityperkennung für den variablen Timeout ist jetzt verbessert und nicht mehr von /etc/mime.types abhängig.

    jsffm Im ersten Fall ist einfach vom streamdev-server nichts gekommen und ffmpeg hat nicht zu arbeiten begonnen. Es werden maximal 2 Versuche gemacht. Offenbar gibt es beim streamdev-server noch irgend einen Bug. Manchmal kommt einfach beim ersten Versuch nichts. Habe ich gelegentlich auch, vor alle wenn der VDR Prozess gerade neu gestartet wurde.


    2 Fall: Korrigiere ich noch. Als Workaround kannst du in /etc/mime.types folgendes für m3u8 definieren:


    Code
    1. application/x-mpegURL m3u8

    M-Reimer eine native Playlist bietet doch streamdev-server schon selber an: http://<server>:3000/channels.m3u Oder was meinst Du genau?


    Die aktuelle Version auf github hat jezt einverbessertes Handling des ffmpeg Prozesses. Jetzt sollten keine toten ffmpeg's mehr hängenbleiben.


    Gruss

    jo01 Klar kommt sobald alles sauber funktioniert. Da gibt es schon noch einiges zu tun... Aufnahmen fehlen natürlich auch noch.


    Bei mir klemmt gelegentlich der streamdev-server. Dann hängt ffmpeg und wird durch das cPipe::Close() abgehängt und läuft aber weiter. Ich bin noch dabei den ffmepg Prozess besser zu steuern und nach Ablauf des Timout abzuschiessen wenn etwas am hängen ist.


    Eeleganter wäre es natürlich ohne streamdev-server zu arbeiten und selber cReceiver zu implementieren.


    Ob der clappr HTML5-Player die beste Lösung ist, kann man auch noch prüffen.


    Gruss, Xcoder

    Bei mir mit ffmpeg 4.1 läuft es nicht:


    Code
    1. vdrlive::stream_data::mimetype(application/vnd.apple.mpegurl)
    2. vdrlive::stream_data::session(4244c557cc825d75f0293f21b349bf18)
    3. vdrlive::stream_data::path(/tmp/live-hls-buffer/master_20.m3u8)
    4. vdrlive::stream_data::is_open(false) 2 /tmp/live-hls-buffer/master_20.m3u8
    5. vdrlive::stream_data::is_open(false) 1 /tmp/live-hls-buffer/master_20.m3u8
    6. vdrlive::stream_data: DECLINED

    @jfsffm: Bei deinem System werden m3u8 Dateien als Mime-Type application/vnd.apple.mpegurl erkannt. Da hast du wohl eine andere /etc/mime<irgendwas>.


    Ich matche in stream_data.ecpp auf application/x-mpegURL und stelle den timeout für das erscheinen der master*.m3u8 auf 10 sekunden. Da es bei dir nicht application/x-mpegURL ist, wird nur ein Timeout von 400 ms genommen. So schnell ist ffmpeg aber nicht und wird vorzeitig totgeschlagen.


    Ich matche wohl besser auf die Dateiendung statt auf den Mime Type. Danke für den Hinweis.


    wolfi.m Vermutlich wir es schon 4.x sein müssen. Habe jetzt nicht genau nachgeprüfft ab wann da die ffmpeg Option -master_pl_name richtig funktioniert. Offenbar hat sich bei ffmpeg bei HLS kürzlich noch relativ viel getan.


    Gruss, Xcoder

    Ich hatte mir letzte Woche ein static build von https://johnvansickle.com/ffmpeg/ geholt. Es war die letzte git Version. Erst damit hat ffmpeg brauchbare master m3u8 Playlists mit der Option -master_pl_name erstellt.


    In /tmp/live-hls-buffer sollte eine Datei master_<Kanalnummer>.m3u8 erstellt werden die dann auf die ffmpeg_<Kanalnummer>_<timestamp>.m3u8 verweist.


    Beobachte mal was in /tmp/live-hls-buffer und syslog passiert.


    Gruss, Xcoder

    Hallo,


    Für jene die sich da mal damit versuchen wollen:


    https://github.com/REELcoder/vdr-plugin-live


    Es wird ein neueres ffmpeg benötigt. Ich habe ein static-build in /tmp/. Temporäre Streaming-Dateien werden in /tmp/live-hls-buffer/ angelegt.


    ffmpeg wandelt den 1. Audiostream auf AAC um. Der Video-Stream wird nur durchkopiert. Für die meisten Browser bedeutet das, dass nur HD Sender mit H264 Stream funktionieren.




    Viel Spass

    BBC ist verschlüsselt:


    Code
    1. 250-795 BBC One HD;upc:514000000:M256:C:6900:144=27:145=NAR@3;155=eng@106:174:1801,1850,1862:9091:1:78:0
    2. 250-796 BBC Two HD;upc:514000000:M256:C:6900:464=27:465=NAR@3;475=eng@106:494:1801,1850,1862:9003:1:78:0
    3. 250-797 BBC One;upc:362000000:M256:C:6900:912=2:913=eng@3,914=NAR@3:0;933=eng:1801,1850,1862:166:1:72:0
    4. 250-798 BBC Four/Cbeebies HD;upc:514000000:M256:C:6900:208=27:209=NAR@3;219=eng@106:238:1801,1850,1862:9095:1:78:0
    5. 250-799 BBC World News;upc:362000000:M256:C:6900:144=2:145=eng@3:0:0:164:1:72:0

    Die Liste der unverschlüsselten DVB-C TV Sender (94 Stück):


    Bei Cablecom ist ja das Problem, dass die Frequenzen von Region zu Region anders sind. Hier gibt es zumindest mit vdr-2.2 aber kein Problem. Es reicht pro Frequenz irgend etwas zu definieren und die Kanalaktualisierung erstellt fehlende Kanäle automatisch. Da die Frequenzen immer 8 MHz Abstand haben, ist schnell klar von wo nach wo etwas zu empfangen ist bei mir z.B. von 146 bis 562 MHz praktisch ohne Lücke. Symbolrate ist immer 6900 und Modulation ist M256, ausser bei der Frequenz mit dem Info Kanal, welcher M64 hat.

    heifisch : Der Sortier-Patch is nun auch dabei.


    M-Reimer : schon erstaunlich, dass so was immer noch ein massives Gefrikel ist. Mit Safari konnte ich von ffmepg mit DASH geliefertes live TV abspielen:

    Code
    1. ffmpeg -y -re -f mpegts -i http://core:3000/1 -map 0:v -map 0:a -codec copy -use_timeline 1 -use_template 1 -window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" -f dash -remove_at_exit 1 ffmpeg.mpd

    Firefox geht aber schon nicht, weil der mit ac3 nichts anfangen kann... Resourcenverbrauch auf dem Server ist fast Null da alles nur durchkopiert wird.