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!!

    Yavdr auf Yammy / 2 Kabel Empfänger / Asrock j4105-itx / IRMP KDB

  • 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 Bookworm, vdr-2.4.1, softhdcuvid, 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 vdr-transcode github

  • 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 Bookworm, vdr-2.4.1, softhdcuvid, 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 vdr-transcode github

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


    Code
    /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
    ffmpeg -buildconf


    Mir fehlt hier die Zeile:

    Code
        --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?

    Yavdr auf Yammy / 2 Kabel Empfänger / Asrock j4105-itx / IRMP KDB

  • 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
    # add-apt-repository ppa:savoury1/ffmpeg4
    # add-apt-repository ppa:savoury1/graphics
    # add-apt-repository ppa:savoury1/multimedia


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


    Code
    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
    top - 11:40:12 up 15 min,  2 users,  load average: 2,26, 3,09, 2,18
    Tasks: 186 total,   1 running, 120 sleeping,   0 stopped,   0 zombie
    %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
    KiB Mem :  7809196 total,  5615688 free,   929956 used,  1263552 buff/cache
    KiB Swap:  2097148 total,  2097148 free,        0 used.  6393916 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1915 vdr       20   0 4264584 434576  66036 S  20,6  5,6   3:27.91 vdr
     6751 vdr       20   0 1096840  78572  41400 S  19,6  1,0   0:07.49 ffmpeg


    Code: Input: QVC HD 1080i
    top - 11:41:25 up 16 min,  2 users,  load average: 1,86, 2,83, 2,16
    Tasks: 186 total,   2 running, 119 sleeping,   0 stopped,   0 zombie
    %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
    KiB Mem :  7809196 total,  5559216 free,   941908 used,  1308072 buff/cache
    KiB Swap:  2097148 total,  2097148 free,        0 used.  6337540 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1915 vdr       20   0 4254316 442044  66016 S  18,5  5,7   3:42.62 vdr
     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


    Yavdr auf Yammy / 2 Kabel Empfänger / Asrock j4105-itx / IRMP KDB

  • Hallo Leute,


    hab gerade auch die aktuelle Version installiert. Funktionierte sofort mit SD Sendern. Bei HD ist das so sporadisch. Sagt mal, wo dreht man das Log richtig auf damit man sieht wenn etwas nicht abspielt, warum etwas nicht abspielt? Verwendet ffmpeg direkt von Portage in der Version 4.2.2.


    Hab außerdem gleich mal 3 Ebuilds bei der Gelegenheit in unserem Repo für dich aktualisiert . Somit kannst du dir bequem die aktuellste vdr-live Version auf Gentoo installieren.

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

  • ffmpeg muß die folgenden Parameter unterstützen:

    Code
    # ffmpeg 
    ffmpeg version 4.2.2-2yavdr0~focal Copyright (c) 2000-2019 the FFmpeg developers
    built with gcc 9 (Ubuntu 9.2.1-29ubuntu1)
    configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-nonfree --prefix=/usr --extra-version='2yavdr0~focal' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca--enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-frei0r --enable-libx264 --enable-shared

    Die Version

    # apt-cache policy ffmpeg

    ffmpeg:

    Installiert: 7:4.2.2-2yavdr0~focal

    Installationskandidat: 7:4.2.2-2yavdr0~focal

    Versionstabelle:

    *** 7:4.2.2-2yavdr0~focal 500

    500 http://ppa.launchpad.net/yavdr/experimental-main/ubuntu focal/main amd64 Packages

    100 /var/lib/dpkg/status


    tut das. Bevor die verfügbar war, mußte ich ein static-build verwenden bzw. selbst kompilieren inkl. aller dependencies.

  • Danke mal für die Buildinfo. Kompiliert gerade. Alle Flags habe ich nicht aktiviert. Jack und Pulseaudio nutze ich auf meinem VDR nicht, und eine Firewireschnittstelle habe ich aktuell für Kameras auch nicht.

    Bin schon gespannt :)

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

  • Was muss denn alles installiert sein damit ich auf einem yavdr ansible in live den web-streaming Button zu sehen bekomme?

    Viele Grüße

  • Gut hab das ganze nun neu kompiliert. Geändert hat es nichts. Manchmal geht es, manchmal nicht. Die Zeile steht im vdr-live Interface:

    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

    bei allen 4 Web-Streaming Zeilen. Mit geloggt wird trotzdem nix. Wo will ffmpeg denn hinloggen? Hier läuft rsyslog.

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

  • Das kompilierte ffmpeg wird (which ffmpeg) auch an erster Stelle gefunden?

    Ich mußte den absoluten Pfad eintragen hier ...

    Die 4 Zeilen aus der setup.conf kopiert:

    Code
    live.StreamVideoOpt0 = /usr/local/bin/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map0:v -map 0:a:0 -c:v copy -c:a aac -ac 2
    live.StreamVideoOpt1 = /usr/local/bin/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map0:v -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2
    live.StreamVideoOpt2 = /usr/local/bin/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map0:v -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2
    live.StreamVideoOpt3 = /usr/local/bin/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map0:v -map 0:a:0 -c:v libx264 -preset ultrafast -crf 23 -tune zerolatency -g 25 -r 25 -c:a aac -ac 2
  • Die Zeile kann nur bei h264 funktionieren.

    Was für einen Browser nutzt Du?


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

Jetzt mitmachen!

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