vdr-live-plugin HTML5 Web-Streaming

  • Gibt es denn auch Bestrebungen das Webstreaming auch für Aufnahmen zu ermöglichen ?

    Weiter oben wurde das auf jeden Fall erwähnt - ich hoffe dass das noch implementiert wird....
    Habe auch gestern das Plugin auf meinem YaVDR Ansible installiert und es läuft auf Anhieb schon mal sehr gut!

    Mit FFMPEG (habe mir auch eine aktuelle Version geladen) werde ich dann demnächst mal experimentieren um zu schauen wie gut GPU Transcoding auf meinem Intel Board läuft.

    Super Projekt auf jeden Fall - Vielen Dank!!

    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing

  • Hallo, Aufnahmen stehen auf der ToDo Liste...


    Hatte da noch keine gute Idee wie das konzeptionell laufen sollte. Bei Live TV startet einfach ffmpeg und saugt vom streamdev-server solange wie vom Webbrowser Stream Segmente geholt werden. Wenn das 1 min lange nicht mehr passiert wird ffmpeg beendet. Oder wenn ein neuer Kanal angefordert wird wird ffmpeg auch neu gestartet.


    Beim Aufnahmen schauen könnte ffmpeg die ganze Aufnahme beginnen zu transcodieren. Da das bei schneller Hardware schneller als Echtzeit geht, könnte man im Player sogar begrenzt vorspulen, soweit wie ffmpeg halt schon transcodiert hat. Die Frage ist aber was passieren soll, wenn man längere Zeit auf Pause geht oder der Browser nichts mehr saugt weil der User anderswo hingesurft ist.


    Ideen wie das sich verhalten sollte sind gefragt!


    Gruss

    VDR: Zotac ZBOX EN860, 16GB RAM, 2 TB HDD, Debian Stretch, vdr-2.4.1, softhddevice, permashift, satip

  • Sollte nicht ein timeout genügen? Wenn länger auf pause, einfach beenden, aber, wichtig, Position merken, bei Wiederaufnahme der Wiedergabe Position anbieten, analog kodi.


    vdr-User-# 755 to_h264 chk_r

  • Position kann man aus dem Range Header im HTTP request des Players rekonstruieren. So könnte an eine beliebige Position gesprungen werden. Die Frage ist dann aber was passiert wenn diese Stelle noch nicht transcodiert ist. Wenn ffmpeg schon am laufen ist könnte man den Browser einfach warten lassen und hoffen, dass ffmpeg so weit ist bevor ein Timeout zuschlägt, oder man beendet ein laufendes ffmpeg und startet ein neuer der mit seek an die entsprechende Stelle vorspuhlt und erst ab da transcodiert. Und irgendwann muss ja der transcodierte contente wieder weg...

    VDR: Zotac ZBOX EN860, 16GB RAM, 2 TB HDD, Debian Stretch, vdr-2.4.1, softhddevice, permashift, satip

  • Wenn man FFMPEG auch ab bestimmten Positionen Transkodieren lassen kann, dann würde ich einfach das bereits transkodierte bei jedem Sprung oder Pause verwerfen (und löschen). Wenn das zuverlässig klappt ist das ja schon mal super.

    Schön wäre wenn auch in einer laufenden Aufnahme die Wiedergabe durchläuft. (ich glaube KODI kann das inzwischen auch - könnte aber Tricky sein weil man FFMPEG beim start ja sicher alle Dateien die wiedergegeben werden sollen übergeben muss...)


    Wie der Player (mit EPD darunter) bei mir in Chrome aussieht habe ich angehängt.

    Leider klappt Transcoding auf meinem Intel System noch nicht so richtig. Das poste ich später mal separat.

    Noch eine kurze Frage: Ist das Login von live eigentlich einigermaßen sicher?
    Also wäre es kritisch einfach per Port-Forwarding Port 8008 auf den VDR weiterzuleiten?

    Gruß,
    Grillbert

  • Noch eine kurze Frage: Ist das Login von live eigentlich einigermaßen sicher?
    Also wäre es kritisch einfach per Port-Forwarding Port 8008 auf den VDR weiterzuleiten?

    Gruß,
    Grillbert

    IIRC erfolgt die Authentikation im VDR doch unverschlüsselt, oder? Da wäre direktes Port-Forwarding vermutlich vom SIcherheitsaspekt her nicht so prickelnd



  • Noch eine kurze Frage: Ist das Login von live eigentlich einigermaßen sicher?
    Also wäre es kritisch einfach per Port-Forwarding Port 8008 auf den VDR weiterzuleiten?


    Ich würde den Port so nicht ins Internet freigeben. Ich gebe nur einen Apache Webserver über 443 nach außen frei und hab darüber per Reverseproxy ein Unterverzeichnis für live eingebunden. Damit läuft das dann auch verschlüsselt. Man kann aber auch im Live Plugin SSL einrichten und das über Port 8443 benutzen.

  • Ich würde den remote Zugriff über ssh tunneln.


    vdr-User-# 755 to_h264 chk_r

  • Hier mal mein Versuch Video Transcoding mit GPU unterstützung zu nutzen:
    Ich habe zum Testen die Handy Variante von UWE67 genommen:


    Code
    1. /home/myhome/ffmpeg/ffmpeg-4.2.1-amd64-static/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel vaapi -hwaccel_output_format vaapi -i <input> -map 0:v -map 0:a:0 -vf 'deinterlace_vaapi=rate=field:auto=1,scale_vaapi=w=640:h=360' -c:v h264_vaapi -preset slow -qmin 18 -qmax 30 -g 25 -r 25 -c:a aac -ac 2 -b:v 0.3M -maxrate 0.3M -bufsize 0.3M


    Ich verwende dasselbe Mainboard (J4105M von Asrock) allerdings läuft der VDR bei mir nicht Headless.
    Einen Test mit Frontend detached habe ich aber auch schon probiert - klappt auch nicht. Im Log landet folgendes (Nach einem Umschaltvorgang):



    Problem ist anscheinend, dass ffmpeg in der statischen variante die weiter oben angegeben war ohne vaapi Unterstützung gebaut wurde.
    Das kann man herausfinden mit:

    Code
    1. ffmpeg -buildconf


    Mir fehlt hier die Zeile:

    Code
    1. --enable-vaapi

    Auch diese beiden Version führen bei meinem Ubuntu (yavdr ansible) nicht zum gewünschten Ergebnis...


    https://launchpad.net/~jonathonf/+archive/ubuntu/ffmpeg-4

    https://snapcraft.io/ffmpeg


    Kennt jemand eine geeignete Quelle für ein Binary?

    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing

  • Hallo zusammen,
    inzwischen habe ich ein funktionierendes FFMPEG gefunden.
    Das ganze klappt mit VAAPI wenn man das Binary von FFMPEG 4.2 aus diesen Repositories installiert:


    Code
    1. # add-apt-repository ppa:savoury1/ffmpeg4
    2. # add-apt-repository ppa:savoury1/graphics
    3. # add-apt-repository ppa:savoury1/multimedia


    Damit läuft Hardware-Encoding mit meinem Intel System (J4105M) mit den weiter oben vorgeschlagenen Configs rund:


    Code
    1. ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v libx264 -preset ultrafast -qmin 18 -vf scale=1280:720 -qmax 30 -g 25 -r 25 -c:a aac -ac 2


    CPU Last von FFMPEG ist damit drastisch geringer als mit der CPU Variante (hier ging der Wert für 1080i Sender bis 180% hoch).


    Code: INPUT: ARD 720p
    1. top - 11:40:12 up 15 min, 2 users, load average: 2,26, 3,09, 2,18
    2. Tasks: 186 total, 1 running, 120 sleeping, 0 stopped, 0 zombie
    3. %Cpu(s): 9,2 us, 9,0 sy, 0,5 ni, 75,3 id, 4,6 wa, 0,0 hi, 1,4 si, 0,0 st
    4. KiB Mem : 7809196 total, 5615688 free, 929956 used, 1263552 buff/cache
    5. KiB Swap: 2097148 total, 2097148 free, 0 used. 6393916 avail Mem
    6. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    7. 1915 vdr 20 0 4264584 434576 66036 S 20,6 5,6 3:27.91 vdr
    8. 6751 vdr 20 0 1096840 78572 41400 S 19,6 1,0 0:07.49 ffmpeg


    Code: Input: QVC HD 1080i
    1. top - 11:41:25 up 16 min, 2 users, load average: 1,86, 2,83, 2,16
    2. Tasks: 186 total, 2 running, 119 sleeping, 0 stopped, 0 zombie
    3. %Cpu(s): 4,8 us, 5,5 sy, 0,7 ni, 80,4 id, 7,4 wa, 0,0 hi, 1,2 si, 0,0 st
    4. KiB Mem : 7809196 total, 5559216 free, 941908 used, 1308072 buff/cache
    5. KiB Swap: 2097148 total, 2097148 free, 0 used. 6337540 avail Mem
    6. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    7. 1915 vdr 20 0 4254316 442044 66016 S 18,5 5,7 3:42.62 vdr
    8. 7029 vdr 20 0 1090560 81744 40680 R 16,6 1,0 0:03.03 ffmpeg


    Damit bin ich erst mal glücklich und freue mich wenn wirklich auch noch eine Möglichkeit für das Abspielen von Aufnahmen kommt...

    Zuzsätzlich zum Abspielen von Aufnahmen wäre es *MEGA* wenn man einfach transcodierte Aufnahmen herunterladen könnte.

    Schönen 3. Advent allerseits,

    Grillbert


    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing