vdr-live-plugin HTML5 Web-Streaming

  • Bei mir sieht das so aus:


    Code
    live.StreamVideoOpt0 = ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v 
    -map 0:a:0 -c:v copy -c:a libfdk_aac -ac 2
    live.StreamVideoOpt1 = ffmpeg -hwaccel cuvid -c:v hevc_cuvid -loglevel warning -f mpegts -analyzeduration 1.2M 
    -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v h264_nvenc -preset llhp -c:a aac -ac 2
    live.StreamVideoOpt2 = ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v 
    -map 0:a:0 -c:v h264_nvenc -preset llhp -qmin 18 -qmax 30 -g 25 -r 25 -c:a aac -ac 2
    live.StreamVideoOpt3 = ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v 
    -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Die Zeile kann nur bei h264 funktionieren.

    Was für einen Browser nutzt Du?

    Hi, ich benutze normalerweise Firefox am Linux-Client, läuft aber auch unter Windows. Chromium kann nur SD.

  • Ein Bandbreitenproblem? Wie sieht denn Deine Vernindung aus?


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Die Zeile kann nur bei h264 funktionieren.

    Was für einen Browser nutzt Du?

    Google Chrome auf KDE Neon (Ubuntu). Ah ok, dann kann man sich mit den Werten spielen... naja... ist aber glaub ich ein anderes Thema, weil es ja funktioniert, manchmal, manchmal nicht. Deswegen wäre das Log interessant. Zur Gegenprüfung hab ich mal Easystream installiert. Funktionieren tun die Sender sonst ganz normal.


    Nachtrag: Hab mir nun Firefox installiert, mit dem geht's immer. Komisch.

    System: Gentoo VDR auf Proxmox virtualisiert im LXC
    Sundtek SkyTV Ultimate Dual

    Einmal editiert, zuletzt von looking111 ()

  • log kommt ganz normal dort wo der vdr hinloggt. Eventuell das vdr loglevel hochdrehen. Bei mir "--log=3".


    Wenn Du fffmpeg ohne hardware decoding/encoding nutzt, könnte es auch an der Leistung des Rechners liegen. Würde zum sporadischen funktionieren passen. Mit dem Setting in #118 wäre das der Fall. jsffm hat da die guten Settings für NVIDIA GPU-Transcoding aufgelistet.

    VDR: Zotac ZBOX EN860, 16GB RAM, 2 TB HDD, Debian Bookworm, vdr-2.4.1, softhdcuvid, satip

  • So, hab das Level auf 3 erhöht, danke.

    Code
    ERROR: read from client (HTTP) 127.0.0.1:55532 failed: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
    [20412] streamdev-server: closing HTTP connection to 127.0.0.1:55562

    Und am Webinterface kommt das da: (siehe Anhang). Da kann sehr oft reload drücken, mal nen anderen Sender probieren... irgendwann tut es dann wieder. Mit Firefox geht das zur gleichen Zeit vom gleichen Rechner aus normal. Die Meldung kommt aber auch ab und zu Firefox, gefühlt aber 20 mal weniger. Ist vermutlich reiner Zufall. Somit passt wohl was bei mir im Backend noch nicht ganz. Wie seht ihr das?

  • Da will irgendwie ffmpeg nicht.


    Versuch mal ffmpeg von Hand zu starten. Z.B. für einen HD Sender (h264). Da habe ich die Einstellung


    ffmpeg -v warning -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel cuvid -c:v h264_cuvid -i <input> -map 0:v -map 0:a:0? -c:v h264_nvenc -preset slow -qmin 12 -qmax 24 -maxrate 8M -g 25 -r 25 -c:a aac -ac 2


    Daraus wir das Shell-Kommando für Kanal 12:


    ffmpeg -y -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel cuvid -c:v h264_cuvid -i http://localhost:3000/12 -map 0:v -map 0:a:0? -c:v h264_nvenc -preset slow -qmin 12 -qmax 24 -maxrate 8M -g 25 -r 25 -c:a aac -ac 2 -f mpegts /dev/null

    Läuft damit ffmpeg problemlos? (speed > 1.0, CPU Last kleiner 100%, stop und erneuter Start problemlos)


    Default für h264 ist:

    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v copy -c:a aac -ac 2


    Damit wir bei einem HD Sender 1-2 MB/s direkt weitergegeben. Das müsste dann dein Netzwerk könnnen.

    VDR: Zotac ZBOX EN860, 16GB RAM, 2 TB HDD, Debian Bookworm, vdr-2.4.1, softhdcuvid, satip

    Einmal editiert, zuletzt von Xcoder ()

  • Hallo Xcoder! Das hat mir schon sehr geholfen. Default ist im Webinterface das:

    Code
    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v copy -c:a aac -ac 2
    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2
    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2
    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2

    Dann hab ich gleich bemerkt das man die Einstellungen je nach verwendetem OS und Hardware erst mal für sich anpassen muss. z.b. heist der Decoder auf Gentoo h264. Da bin ich noch am reinbasteln. Na jedenfalls hab ich gleich mal den Intelchip in den Container durchgereicht und mit folgendem Befehl arbeiten alle Cores auf Hochtouren:


    Code
    ffmpeg -y -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel vaapi -c:v h264 -i http://localhost:3000/6 -map 0:v -map 0:a:0? -c:v h264 -preset slow -qmin 12 -qmax 24 -maxrate 8M -g 25 -r 25 -c:a aac -ac 2 -f mpegts /dev/null

    Der Output ist dann ein wenig länger:

    Nachdem alle HDstream mit h264 reinkommen, sollte ffmpeg ja eh nichts tun, und alles 1:1 durch lassen. Somit müsste das mit der ersten Zeile ja tun. Optmieren werd ich Zeilen gleich mal. Ist sicherlich ne gute Idee. Bin schon auf das Feedback gespannt. Sehr interessantes Thema.

    System: Gentoo VDR auf Proxmox virtualisiert im LXC
    Sundtek SkyTV Ultimate Dual

  • Wenn ich das richtig sehe, wird die GPU nicht genutzt. Du hast -c:v h264. Das nimmt den Encoder libx264 der auf der normalen CPU läuft. Für vaapi sollte das -c:v h264_vaapi sein. Kenne mich mit vaapi nicht so gut aus.


    Welchen Speed erreicht ffmpeg? Da sehe ich dass es weniger als 1 ist, also nicht live...


    frame= 315 fps=8.6 q=-1.0 Lsize= 8478kB time=00:00:13.56 bitrate=5121.9kbits/s speed=0.371x


    Du kannst zum üben auch einfach eine Aufnahme nehmen. Dann als -i Argmuent einfach ein 00001.ts File wählen. Mit einer Aufnahme sollte dann der speed wesentlich grösser als 1 sein. Ich erreiche mit meiner NVIDIA GPU mit Framrate 25 einen speed von 17x.

    VDR: Zotac ZBOX EN860, 16GB RAM, 2 TB HDD, Debian Bookworm, vdr-2.4.1, softhdcuvid, satip

  • Ich hatte immer Problemen mit Google Chrome und habe es gelöst mit:

    Code
    /home/carel/ffmpeg -loglevel warning -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -f mpegts -analyzeduration 0.5M -probesize 1M -i input-map 0:v -map 0:a:0 -c:v h264_vaapi -b:v 2M -maxrate 3M -c:a aac -ac 2

    Allerdings fehlt ab und zu die hls und friert die Wiedergabe ein oder endet in einem Zeitlupe:


    Code
    2020-04-10 08:35:22.95565 [21606.139993024546560] WARN tntnet.worker - http-Error: 404 Not Found: vhost: 10.0.0.2:8002 /media/624a5b552157b00aedc0f7760dac4c53/ffmpeg_16_data20200410083515.ts
    2020-04-10 08:35:26.15584 [21606.139993041331968] WARN tntnet.worker - http-Error: 404 Not Found: vhost: 10.0.0.2:8002 /media/624a5b552157b00aedc0f7760dac4c53/ffmpeg_16_data20200410083515.ts
    2020-04-10 08:35:32.42412 [21606.139993024546560] WARN tntnet.worker - http-Error: 404 Not Found: vhost: 10.0.0.2:8002 /media/624a5b552157b00aedc0f7760dac4c53/ffmpeg_16_data20200410083515.ts
    2020-04-10 08:35:41.56761 [21606.139993041331968] WARN tntnet.worker - http-Error: 404 Not Found: vhost: 10.0.0.2:8002 /media/624a5b552157b00aedc0f7760dac4c53/ffmpeg_16_data20200410083515.ts


    Habe auch im ffmeg.cpp der 'localhost' geändert weil 'access denied'


    Code
    -       ss << "\"http://localhost:" << LiveSetup().GetStreamdevPort() << "/" << targetChannel << "\"";
    +       ss << "\"http://10.0.0.2:" << LiveSetup().GetStreamdevPort() << "/" << targetChannel << "\"";
  • Ok, so richtig scheint das hier wohl nicht zu greifen mit der GPU:

    Hier meine Testcodezeile:

    Code
    ffmpeg -y -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel vaapi -hwaccel_device /dev/dri/renderD128  -c:v h264 -i http://localhost:3000/6 -map 0:v -map 0:a:0? -c:v h264_vaapi -preset slow -qmin 12 -qmax 24 -maxrate 8M -g 25 -r 25 -c:a aac -ac 2 -f mpegts /dev/null

    Hab auf ner anderen Maschine mein Emby so am laufen, auch auf LXC, dort tut es.

    System: Gentoo VDR auf Proxmox virtualisiert im LXC
    Sundtek SkyTV Ultimate Dual

  • looking111 läuft der server headless ohne angeschlossen Bildschirm? Die GPU wird evtl. nur mit angeschlossenem Bildschirm aktiviert.

    Ich hab mir dafür so einen Headless HDMI Adapter besorgt der einen Bildschirm emuliert.

  • looking111 läuft der server headless ohne angeschlossen Bildschirm? Die GPU wird evtl. nur mit angeschlossenem Bildschirm aktiviert.

    Ich hab mir dafür so einen Headless HDMI Adapter besorgt der einen Bildschirm emuliert.

    Danke für deine Idee. Hab nen Bildschirm angehängt. Das ändert das Verhalten leider noch nicht. Viel. passt sonst was nicht. Naja. Wenns nicht über die GPU geht ist es zwar schade. Aber ich kann damit leben.

    System: Gentoo VDR auf Proxmox virtualisiert im LXC
    Sundtek SkyTV Ultimate Dual

  • Moin,

    kurz zu mir: ich benutze VDR schon von Anfang an. Meine Systeme laufen immer so stabil, dass man über Jahre hinweg nichts daran machen muss. Vielen Dank dafür an alle Entwickler und Helfer hier!

    Der Nachteil: da Linux nicht mein täglich Brot ist, vergesse ich immer wieder, wie alles so im Detail gemacht wird, darum verzeiht bitte, wenn ich mich etwas dumm anstelle.

    Mein Ansinnen: ich habe ein Yavdr-Ansible 0.6 in einer ESXI-Virtuellen Maschine mit Digital Devices Cine S2 V7, der alle Aufnahmen macht und sich um das Streaming kümmert. Von dem Wohnzimmer VDR soll er die Timer übernehmen und damit man auch ohne Wohnzimmer weiß, was er so tut (und man alte Aufnahmen löschen kann etc) wollte ich gerne das Live-Plugin installieren.

    Nach dem Checkout von GIT habe ich versucht, ./configure zu starten, aber das gibt es nicht und sudo make liefert mir die folgenden Fehler:

    Mich beschleicht das Gefühl, dass da irgend etwas falsch läuft.

    Kann mich jemand auf den richtigen Weg schubsen?


    PS: warum auch immer: mein alter Account hier (jarjar) lässt sich nicht reaktivieren)

  • :wand

    ok. danke, das war einfach.


    Nach Einrichtung einer Firewall-Regel mit sudo ufw allow 8008 und sudo systemctl restart vdr taucht im log nur ein Fehler auf, der mit dem Laden eines SSL-Zertifikats zu tun hat. Ich nehme an, das sollte die Grundfunktion nicht einschränken...

    Die Startseite zeigt nach Login mit admin:live nur den Fehler:


    Kann Infobox nicht aktualisieren!


    Bei jedem Click auf irgendeine Funktion springt Live wieder auf den Anmelde-Screen zurück.


    Im Syslog tauchen keine Fehler auf:(

  • Hast du nun das aktuelle kompiliert oder das von dem Repo mit apt installiert? Das wegen dem Zertifikat ist egal. Du nutzt es ja nicht. Sieht jetzt irgendwie so aus wie wenn das LivePlugin den VDR nicht sieht. Ich weis jetzt garnicht wie VDR-Live auf den VDR zugreift, macht es das direkt über SVDRP?

    System: Gentoo VDR auf Proxmox virtualisiert im LXC
    Sundtek SkyTV Ultimate Dual

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!