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

  • 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, 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

  • 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

  • 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
    Digital Devices Cine S2 V6.5

    Kodi 18.x mit VNSi

  • ffmpeg muß die folgenden Parameter unterstützen:

    Code
    1. # ffmpeg
    2. ffmpeg version 4.2.2-2yavdr0~focal Copyright (c) 2000-2019 the FFmpeg developers
    3. built with gcc 9 (Ubuntu 9.2.1-29ubuntu1)
    4. 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.

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.9-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • 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
    Digital Devices Cine S2 V6.5

    Kodi 18.x mit VNSi

  • 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
    1. 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
    Digital Devices Cine S2 V6.5

    Kodi 18.x mit VNSi

  • 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
    1. 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
    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
    3. 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
    4. 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

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.9-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • Die Zeile kann nur bei h264 funktionieren.

    Was für einen Browser nutzt Du?


    vdr-User-# 755 to_h264 chk_r vdr-transcode