Posts by beta

    Welches Problem gibt es denn da ?

    Die laufen bei mir nicht. Der Parameter -t gefolgt von dem codecs.ini-File sollte laut Zabrimus helfen, macht er aber bei mir nicht.

    Was mir darüber hinaus auch noch aufgefallen ist: Ich muss remotrans am Anfang einmal resetten (pkill und Neustart), damit es nach einem neuen Boot läuft. Beispiel ist der Film "Meeresleuchten" aus der oberen Leiste.


    EDIT: Und wenn ich danach dann wieder einen anderen Film schaue, habe ich Schnipsel von beiden Filmen in einer Dia-Show. Danach muss ich dann cefbrowser und remotrans neu starten, damit es wieder läuft. Komischerweise läuft dann auch der Film "Meeresleuchten". Sehr merkwürdig das Ganze. Vielleicht doch das von Dir beschriebene Puffer-Problem?

    Ja, mache ich. Wenn ich die Skripte mit screen starte, funktioniert es. Allerdings auch nicht immer. Oft muss ich remotrans killen und neu starten, danach funktioniert es wieder auf anhieb, bis wieder ein Film nicht funktioniert. Dann hilft wieder der Neustart von remotrans.

    Wenn ich remotrans von einer Shell aus Starte (z.B. shh), dann läuft es. Es läuft aber nicht, wenn ich das Ganze in ein Skript packe, das von VDR gestartet wird. Hat hier jemand eine Idee?


    Kann das es dann ein Problem mit den Sockets sein, wenn cefbrowser und remotrans nicht in einem Terminal laufen?

    jojo61 Hier ist das log:



    Ist das ein Problem mit remotrans?

    Mache ich heute Abend. Welches log meinst Du? softhdodroid oder cefbrowser oder remotrans?

    Hast Du Dein Plugin gepatched (und den VDR) oder nicht? Ich nutze den Github-Stand ohne Patch.

    Und ich nutze die master-branches von vdr-plugin-web, remotrans und cefbrowser.

    jojo61 Mit dem softhdodroid-Plugin spielen bei mir keine 480p-Filme. Könntest Du mal schauen, ob man da an Deinem Plugin was machen kann? Bei ZDF kann ich alles insgesamt auf Full-HD umstellen und das läuft ohne Probleme. Bei ARD starten aber viele Filme in 480-Auflösung, was nicht funktioniert. Manche kann ich umstellen auf Full-HD, bei anderen wirft mich das Web-Plugin dann raus und ich lande wieder im VDR.

    Wie versprochen, hier ein kleines HOWTO, um alles native in einer chroot-Umgebung auf Amlogic-Boxen zu installieren (getestet auf meinem Radxa Zero).


    1. Mögliche fehlende Pakete installieren


    Code
    apt install -y zlib1g-dev libssl-dev libcrypt-dev libglib2.0-dev libnss3-dev \
    libatk1.0-dev libatk-bridge2.0-dev libcups2-dev libxcomposite-dev libxdamage-dev \
    libxrandr-dev libgbm-dev libxkbcommon-dev libpango1.0-dev libasound2-dev


    Meson aus apt ist zu alt. Daher meson über python3 mit pip3 installieren:


    Code
    pip3 install meson


    Meson liegt danach unter /usr/local/bin/meson


    Code
    apt install ninja-build



    2. Web plugin


    Code
    cd vor/PLUGINS/src
    git clone https://github.com/Zabrimus/vdr-plugin-web web


    Makefile-Zeile ändern (-lrt und -lswscale dazufügen):


    Code
    LDFLAGS += $(shell pkg-config --libs libswscale) -lrt -lswscale


    Code
    make
    make install


    Die Datei sockets.ini an eine Stelle der Wahl kopieren


    Code
    cp vdr/PLUGINS/src/web/config/sockets.ini /home/rudi/sockets.ini


    und überall die IP-Adresse des eigenen Rechners eintragen. Bei mir sieht das so aus:



    3. Remoteranscode


    Code
    cd /home/rudi
    git clone https://github.com/Zabrimus/remotetranscode --recursive
    cd remotetranscode
    /usr/local/bin/meson setup build
    cd build
    /usr/local/bin/meson compile -j1
    /usr/local/bin/meson install


    Das -j1 ist wichtig, da das kompilieren sonst mit einem fatal error abbricht (zu wenig Speicher).


    Ich kopiere remotrans und den movie-Ordner nach root (/), es kann aber auch da liegen bleiben, wo es jetzt ist


    Code
    cp remotrans /
    cp -r movie /


    Das erspart mir später im Skript, das Verzeichnis zu wechseln und die Root-Umgebung ist automatisch gesetzt.


    4. cefbrowser (quick and dirty!)


    Code
    cd /home/rudi
    git clone https://github.com/Zabrimus/cefbrowser --recursive
    cd cefbrowser
    ./setup.sh arm64


    Vor dem Kompilieren müssen noch 2 Dateien geändert werden:


    In cefbrowser/subprojects/cef muss die Datei CMakeLists.txt so geändert werden (sonst ist das cmake zu alt)


    Code
    < cmake_minimum_required(VERSION 2.21)
    ---
    > cmake_minimum_required(VERSION 3.21)


    Dann


    Code
    /usr/local/bin/meson setup build


    aufrufen.


    In cefbrowser/build muss die Datei build.ninja geändert werden (-lrt muss dazu, sonst gibt es undefined symbols beim Linken):


    Code
    < command = c++ $ARGS -o $out $in $LINK_ARGS
    ---
    > command = c++ $ARGS -o $out $in $LINK_ARGS -lrt
    Code
    cd build
    /usr/local/bin/meson compile -j1


    bricht mit einem Fehler ab, da die (Cross)-Architektur nicht stimmt. Daher müssen in der Datei build.ninja weitere Änderungen durchgeführt werden. Jedes Vorkommen von -m64 -march=x86-64 muss gelöscht werden. Das kann man mit einem Editor seiner Wahl machen (Search and replace all). Ich weiß, dass das quick&dirty ist. Besser wäre es, das Build-Skript anzupassen.


    Kompilieren erneut starten:


    Code
    /usr/local/bin/meson compile -j1
    /usr/local/bin/meson install



    Wichtig:


    Das web-Plugin muss laufen, bevor cefbrowser und remotrans gestartet werden. Zum Testen empfiehlt es sich, beide Programme in einer separaten Shell zu starten, damit man die Log-Ausgaben sieht.

    Falls alles läuft, kann man das in ein Skript packen. Ich starte in meiner runvdr ein Skript namens hbbtv.sh so


    Code
    /home/rudi/hbbtv.sh &


    Das Skript hbbtv.sh sieht so aus:


    Bash
    #!/bin/bash
    timeout 30 sh -c 'until nc -z $0 $1; do sleep 1; done' localhost 6419
    # Start cef browser and remotrans here
    at -f /home/rudi/starte_cef.sh now
    at -f /home/rudi/starte_remotrans.sh now


    Wichtig ist, dass der atd-Daemon läuft (mit atd starten in der runvdr).


    Die beiden weiteren Skripte sehen so aus:

    starte_cef.sh:

    Bash
    #!/bin/bash
    killall cefbrowser
    cd /home/rudi/cefbrowser/build/Release/
    LD_LIBRARY_PATH=/home/rudi/cefbrowser/build/Release ./cefbrowser --config /home/rudi/sockets.ini --ozone-platform=headless -f -z 1920


    Und starte_remotrans.sh so:

    Bash
    #!/bin/bash
    killall remotrans
    /remotrans -c /home/rudi/sockets.ini


    Das killall habe ich dazugesagt, da ich dann bequem von der VDR commands.conf aus den Browser oder remotrans neu starten kann.

    Die Einträge in der commands.conf sehen bei mir so aus:


    Code
    Starte CEF-Browser : at -f /home/rudi/starte_cef.sh now
    Starte remotrans : at -f /home/rudi/starte_remotrans.sh now


    Danke nochmal an Zabrimus für dieses tolle Projekt.

    Im Prinzip funktioniert es. Ich habe allerdings häufig folgendes Problem, Zabrimus:


    Manche Filme starten nicht immer. Wenn ich dann das Web-Plugin verlasse und versuche, einen anderen Film zu starten, habe ich Bruchstücke des ersten Films in der Ausgabe. Wenn es funktioniert, wird der Film aber richtig abgespielt. Daher denke ich nicht, dass es am Ausgabeplugin oder am ffmpeg liegt ( jojo61 softhdodroid). Wenn da logs helfen, liefere ich die gerne nach. Der Browser muss dann neu gestartet werden, damit es eine Chance auf Funktionieren gibt. Es funktioniert ca. jeder 6.-7. Versuch. Tagesschau funktioniert übrigens immer.


    jojo61 Ich habe wahrscheinlich wenig Zeit für das Skript in den kommenden Tagen. Ich kann aber ein kleines howtio schreiben, so dass Du Dir das auch einmal native unter der chroot-Umgebung anschauen kannst.

    Mit diesem Aufruf


    Code
    LD_LIBRARY_PATH="/home/rudi/cefbrowser/build/Release/" ./cefbrowser --config /home/rudi/sockets.ini --ozone-platform=headless -q -z 1920

    funktioniert es ganz gut und ich kann weiter testen.


    Zabrimus und jojo61: Mir ist es nicht gelungen, den Start des cef-Browsers und des Transcoders in meine runvdr zu implementieren. Wenn ich die Skripte von einer Shell aus Aufrufe, läuft alles. Wenn ich aber die runvdr vom System des rootfs aus aufrufe (in meiner chroot), laufen weder der cefbrowser (obwohl der Prozess da ist) noch der remotrans (hier ist der Prozess nicht da). Kann das etwas mit den Sockets zu tun haben und wie kann man das Problem lösen? Hat jemand eine Idee?


    Ansonsten läuft das superflüssig unter CoreElec in meiner chroot.


    EDIT: Es sieht so aus, als müsste der VDR zuerst laufen und dann erst der cefbrowser und remotrans. Wenn ich das in meine commands.conf packe, dann funktioniert es, also muss es auch anders gehen.

    Deine Arbeit hat sich gelohnt, Zabrimus, vielen Dank nochmal. Ich habe allerdings das Problem, dass das Ganze nur einmal funktioniert (z.B. Tagesschau-Video). Nach Rückkehr zum VDR und nach einem 2. Web-Aufruf ist es rein Glückssache und das Browser-Log ist voll mit:


    Code
    [2023-08-01 23:46:13.071] [cefbrowser] [error] [vdrremoteclient.cpp:43] HTTP error (ProcessOsdUpdate): Could not establish connection


    Fehlen mir da noch irgendwelche Patches (zugegeben, ich muss den Thread noch einmal komplett lesen...).


    EDIT: Oder war es der letzte Commit des web-Plugins (- device->Detach(aitFilter);)? Den hatte ich gestern noch nicht drin. Im Moment kann ich nur leider nicht testen.