Posts by Zabrimus

    So das aufrufen über die URL geht nun wieder. Aber über den Red Button geht es immer noch nicht. Das ist wohl der 2. Fall oder ?


    PS:


    Nur noch zur Info. Ich gebe --commandline=--password-store=basic als parameter für dem browser mit. Sonst fragt er mich nach dem Keystore passwort beim ersten starten. Das könntest du evtl. noch als default einbauen.

    Ja. Das ist der zweite Fall. Ich lese gerade den Code und versuche eine Lösung zu finden, wie ich den Content-Type korrigieren kann.

    password-store? basic? Was? Ich habe das mal probiert und es scheint nicht schädlich zu sein. Aber wie bist du denn auf den Parameter gekommen?

    Der Browser kann vom Plugin gestartet werden oder unabhängig vom Plugin. Ich habe in den CefSettings oder ähnlichem, keinen Hinweis gefunden, wie ich das im Browser direkt einstellen kann. Ich weiß auch gar nicht, welche der Prozesse die Verantwortung für den Password-Store übernimmt (Render, Network, JS, ...).
    Ich kann es im Plugin einbauen... Aber zuvor würde ich gerne wissen, ob es auch noch bei anderen funktioniert, die den Parameter aktuell nicht gesetzt haben.

    Umfrage:

    Braucht jemand den Parameter "--pasword-store=basic"? Und falls nicht: Bemerkt ihr Probleme oder anderes unerwünschtes Verhalten mit dem Parameter?

    Okay. Bei dir läuft irgendwas falsch.

    1. Problem

    Display Spoiler

    [2020-06-26 10:35:50.328] [browser] [debug] ReadContentType http://www.tagesschau.de/hbbtv/, Cookies

    [2020-06-26 10:35:50.353] [browser] [trace] HbbtvCurl::ReadContentType, Result application/vnd.hbbtv.xhtml+xml; charset=UTF-8

    Der Content-Type für die Seite ist eben nicht "application/vnd.hbbtv.xhtml+xml".

    2. Problem

    Display Spoiler

    [2020-06-26 10:35:50.392] [browser] [debug] ReadContentType http://www.tagesschau.de/itv/hbbtv/hbbtv.cehtml, Cookies

    [2020-06-26 10:35:50.414] [browser] [trace] HbbtvCurl::ReadContentType, Result text/html; charset=utf-8

    Und hier liegt der umgekehrte Fall vor. "text/html" sollte es nicht sein, weil dies eben eine HbbTV-Seite ist.


    So sieht das bei mir aus:

    Display Spoiler

    Zu 1:

    [2020-06-26 10:21:12.786] [browser] [debug] ReadContentType http://www.tagesschau.de/hbbtv/, Cookies

    [2020-06-26 10:21:12.962] [browser] [trace] HbbtvCurl::ReadContentType, Result text/html

    Zu 2:

    [2020-06-26 10:21:13.108] [browser] [debug] ReadContentType http://www.tagesschau.de/itv/hbbtv/hbbtv.cehtml, Cookies

    [2020-06-26 10:21:13.205] [browser] [trace] HbbtvCurl::ReadContentType, Result application/ce-html+xml

    Der falsche Content-Type in 1. verhindert durch das Caching auch, daß du die Seite wohl nie aufrufen kannst. Ich werde gleich eine Änderung für den Browser committen, der den Cache ausschaltet. Das sollte zumindest Problem 1 lösen.

    Entweder werden falsche Header-Daten geliefert oder der Autodetect in Chromium/CEF geht schief. Vielleicht kann ich da eingreifen, aber das muss ich mir anschauen.


    Info: Die Änderung habe ich gerade committed.

    Hmm. Ich gehe grade die gestrigen Commits durch. Und es gab im Browser nur 2 Änderungen + die zurückgenommene Änderung für text/html.

    1. Jede neue URL wird geladen ohne zu vergleichen, ob der Browser diese URL aktuell geladen hat

    2. Der Content-Type für hbbtv-Seiten wird gespeichert und verwendet, aber auch nur, wenn wirklich hbbtv geliefert wurde

    Die Tageschau liefert unter der URL eine sehr simple Seite, die nur ein ein Element im Header hat:

    Display Spoiler

    <?xml version="1.0" encoding="utf-8" ?>

    <html>

    <head>

    <meta http-equiv="refresh" content="0; URL=/itv/hbbtv/hbbtv.cehtml">

    </head>

    <body>

    </body>

    </html>

    Und wenn genau für diese Seite der Content-Type im HTTP-Header nicht "text/html" ist (oder falls mein fehlerhafter Commit noch vorhanden ist), dann tritt dein Fehler auf.

    Bei mir sieht das im Trace-Log so aus:

    Display Spoiler
    Code
    [browser] [trace] BrowserClient::OnLoadingStateChange: URL=http://itv.ard.de/ardstart/index.html, isLoading=true, canGoBack=false, canGoForward=false
    [browser] [trace] BrowserClient::GetResourceRequestHandler for http://www.tagesschau.de/hbbtv/, is_navigation true, request_initiator null
    [browser] [trace] BrowserClient::OnBeforeResourceLoad: Current http://itv.ard.de/ardstart/index.html, New http://www.tagesschau.de/hbbtv/
    [browser] [trace] GetResourceHandler: http://www.tagesschau.de/hbbtv/
    [browser] [debug] ReadContentType http://www.tagesschau.de/hbbtv/, Cookies 
    [browser] [trace] Received command from VDR: OSDU
    [browser] [trace] Unlock shm_mutex
    [browser] [trace] HbbtvCurl::ReadContentType, Result text/html

    Die letzte Zeile ist die Entscheidende.

    Aber ich kann mir nicht erklären, warum die gestrigen Änderungen den Fehler erzeugen sollen.

    edit: Lesbarer trace-log

    Bei auswählen über den Red Button kommt es nach wie vor gar nicht

    Das würde ich mir gerne mal näher ansehen. Allerdings müsstest du dafür das browser.log löschen und den Browser neu mit dem loglevel "--trace" (statt --debug oder --info oder was auch immer) neu starten. Es wird allerdings extrem viel geloggt und mir würde es reichen bis zum Klick auf Tagesschau in der Red-Button Liste.

    Ich habe gerade die Version 0.0.2 getagged - sowohl Browser, als auch Plugin. Das ppa baut auch gerade, wobei ich wahrscheinlich keinen Fehler bei den Versionsnummern ausgelassen habe. Die nächsten Versionen muss ich vorsichtiger angehen.

    Browser:

    Display Spoiler

    - Bugfixes

    heartbeat

    double-free in cookie list

    Arte videos doesn't show "Plugin not found" message anymore

    Bitrate change of Arte videos

    FixSkipped.patch by TomJoad ([Announce] HbbTV plugin / offscreen browser v0.0.2)

    cache content-type if hbbtv page found

    - New

    Send video size and coordinates to VDR Plugin

    New Parameter --logfile

    Connection changed to TCP

    Leider scheint es so zu sein, daß manche Seiten mal text/html und mal einen hbbtv Content-Type im HTTP-Header liefern. Das war z.T. die Ursache, das nicht alle Seiten sofort geladen worden sind. Im Browser wird sich nun gemerkt, hinter welcher URL mal ein hbbtv Content-Type stand und dann dieser verwendet. Es ist ein wenig besser geworden.


    Plugin:

    Display Spoiler

    - Bugfixes

    heartbeat

    faster VDR start

    - New

    Connection changed to TCP

    New Menu entry browser to control the vdrosrbrowser

    New Menu entry "Reopen OSD" to open the last OSD

    SVDRP commands STATUS and GETURL

    Video size and coordinates from browser will be used to scale video in VDR

    Clear the OSD part, where non-fullscreen videos shall be visible

    Im Plugin dürfte der neue Menupunkt "Reopen OSD" interessant sein. Damit soll - so die Theorie - die letzte Version des Browser-OSD neu geöffnet werden. Falls das OSD also mal absichtlich oder versehentlich geschlossen wurde, kann man mit dem Menupunkt das OSD wieder öffnen.


    Ich weiß nicht, wie lange es dauert, die Probleme mit tagesschau, n-tv und neuerdings ORF und SRF1 zu lösen - und wahrscheinlich auch anderen Sendern.

    Das sieht auf jeden Fall etwas anstrengender aus.

    Das funktioniert:

    Ich habe mir eine aktuellere Version von ffmpeg compiliert. Das muss irgendeine 4.2er git version sein, die noch auf der Platte lag.

    Ja und damit funktioniert es. Also scheint ffmpeg 4.2.x das Minimum zu sein, mit dem es klappt. :]

    Juchuuu.

    Edit: Aber da ist noch Arbeit im Browser notwendig. Die Video-URL ist erst ein mpd-File und dann wird auf blob:xxxx gewechselt. Ich denke, daß muss ich irgendwie unterbinden.

    500 Command unrecognized: "GETURL"

    Das Kommando sollte wieder funktionieren. Dazu müssen aber sowohl der Browser, als auch das Plugin aktualisiert werden.

    Die stream.mpd ist eine xml

    Das habe ich gesehen. Aber so richtig schlau bin ich aus den Werten nicht geworden. Aber irgendwie scheint VLC daraus etwas machen zu können, obwohl unklar ist, wie. Vielleicht finde ich dazu irgendwo mal eine Spezifikation.

    Ohne es probiert zu haben: Mit neuem ffmpeg , wo libxml2 enabled sein muss, könnte ffmpeg -i xxx.mpd -codec copy output.ts gehen.

    Genau das hatte ich probiert und dann kam die oben erwähnte Fehlermeldung. FFmpeg 4.1.4 funktioniert nicht. Eine noch aktuellere Version muss ich mir erst compilieren und dann testen.

    Display Spoiler

    ffmpeg version 4.1.4-1~deb10u1 Copyright (c) 2000-2019 the FFmpeg developers

    built with gcc 8 (Debian 8.3.0-6)

    configuration: --prefix=/usr --extra-version='1~deb10u1' --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-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared


    Navigation klappt noch nicht in diesem Bild.

    Das ist eine weitere Baustelle. Zifferntasten (siehe oben im Menu) funktionieren, aber sonst nix. Es scheint, als ob andere Keycodes verwendet werden.

    Ich habe nicht den blauen Button genutzt sondern bin auf der Startseite auf den Icon zum restarten der aktuelle Sendung gegangen.

    Nochmal dazu. Ich fürchte, das wird ein echtes Problem. Ich habe das gerade versucht und erhalte als Video URL ein *.mpd. FFmpeg soll angeblich damit umgehen können, aber wenn ich es versuche, dann kommt immer nur die Meldung

    Code
    http://itv.ard.de/replay/dyn/stream.php/1-3169/stream.mpd: Invalid data found when processing input

    Wobei sich die URL je nach Sendung oder Zeit ändert.

    Ich bin mir sicher, daß ich den Restart schon einmal gesehen habe. Aber das kann auch Zufall sein, daß genau in meiner Test-Sendung eben kein MPEG-DASH, sondern eine echte Video-URL anlag. Das Problem hatte 9000H schon angesprochen und es klappte bei mir sofort. Wohl reiner Zufall :(

    Das erklärt dann auch die blob:http-URLs, die gesehen wurden. Die URLs werden wohl normalerweise anders behandelt. Ich denke die Javascript DASH Lib wird da einspringen und alles richtig machen.

    Kurioserweise sehe ich im Chrome mit der HybridTvViewer-Extension (die ich auch intern verwende, allerdings überall rumgepatcht) eben keinen blauen Button und kann nicht nachschauen, was die Extension eigentlich hätte machen sollen.

    Ich sehe im Moment keine echte Lösung. Mich springt da aber auch gerade keine verwegene Idee an.

    Ich habe es auch mal mit vlc versucht, aber da bekomme ich nur

    Display Spoiler

    vlc http://itv.ard.de/replay/dyn/stream.php/1-3169/stream.mpd

    VLC media player 3.0.8 Vetinari (revision 3.0.8-0-gf350b6b5a7)

    [000056534b425570] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.

    [00007f9378002be0] adaptive stream error: Failed reading http://mcdn.daserste.de:80/daserste/dash/manifest_640x360p50_1024k-18446744073709547226.mp4: HTTP/1.1 404 Not Found

    [00007f9378002be0] adaptive stream error: Failed reading http://mcdn.daserste.de:80/daserste/dash/manifest128k_aac-18446744073314346247.mp4: HTTP/1.1 404 Not Found

    Was auch nicht wirklich hilfreich ist. Aber zumindest scheint VLC aus der mpd echte Links zu basteln. Nur wenn die ein 404 liefern, nützt das auch nix.


    Ich fürchte, das Problem ist eine echte Herausforderung und wird erstmal nach hinten geschoben werden müssen, bis die Erleuchtung kommt. Vielleicht kann ich zumindest den Fehler abfangen und was sinnvolles daraus machen.

    Kannst Du das PPA mit dem Browser aktualisieren?

    Paket ist hochgeladen und baut gerade.

    Notiz an mich: Das muss irgendwie automatisiert werden. Die Fehlversuche und Reuploads strengen etwas an.

    Über den Red Button und navigieren zu tagesschau geht bei mir gar nicht.

    Ich gehe gar nicht anders auf die Seite. 8|Hmm.... Ich überlege, woran das liegen könnte. Ich brauche ein weiteres Testsystem.

    Wat? blob? Und die Command-Line-Probleme? Sehr seltsam.. Andererseits. Wenn ffprobe die aktuellen codecs nicht finden kann... hmm...


    Tagesschau und n-tv :/

    looks like the browser get not auto started since ? and the browser ping tells it's running but is not.

    I've removed a sleep loop waiting for the browser while starting the plugin, which slows down the VDR start. But the browser itself shall be started if configured. I haven't change the start mechanism at all - except the sleep loop. Aren't you able to open any page?

    Die Seite der Tagesschau lädt nur wenn ich die URL direkt anwähle. Aus der Startseite heraus kommt sie nicht.

    Aus der Startseite? Meinst du den Red-Button? So rufe ich die Seite immer auf. Aber es scheint noch ein Problem mit dem Laden von Seiten zu geben, weil manchmal tut sich nichts, oder erst beim zweiten Aufruf. Ich muss da nochmal nachschauen.

    Auf dieser Seite läuft zwar das erste Video nun schön sauber, aber eine Navigation ist nicht möglich

    Das ist mir auch schon aufgefallen. Die Ziffern-Tasten 2,3,4 funktionieren. Die 0 scheint das Video in Fullscreen darstellen zu wollen, das klappt aber noch nicht richtig. Und was die Navigation angeht, wollte ich schon fragen, ob jemand weiß (mit einem echten HbbtV-Fernseher), ob da wirklich eine Navigation möglich ist.

    Bei n-tv werden die bunten Buttons (rot,gelb,grün und blau) in den Seiten genutzt. Das funktioniert nur bedingt. Zurück funktioniert da nicht

    n-tv ist sehr speziell. Da muss ich auf jeden Fall nochmal ran und untersuchen, welche Spezialitäten die haben.

    Bei ARD funktioniert das starten der aktuellen Sendung (blauer Button oder aus der Startseite) nicht

    Auch nicht, wenn der blaue Button im OSD eingeblendet wurde? Bei ARD scheint das etwas zu dauern. Erst kommt der Rote-Button und Sekunden später der Blaue+Rest.

    Es gibt aber auch noch ganz andere Probleme, die ich zwischendurch bemerke. Ich weiß nicht mehr, welche Seite das war, aber irgendwo schlägt CORS zu und verhindert das Nachladen von jquery Libs. Was dann so richtig blöd ist, weil nix mehr funktioniert. Angeblich kann man das abschalten, aber so richtig gut gefällt mir die Idee nicht.

    Es wäre auch sehr schön wenn ich den Response-Header direkt manipulieren könnte. Das würde den kompletten Code stark vereinfachen und ich könnte die Workarounds (die stark bremsen) ausbauen. Das Ticket CEF Ticket #2785 existiert schon seit letztem Jahr, aber es gibt noch keinen Fortschritt :(

    Ich habe mich unglücklich ausgedrückt, der Ffmpeg-Parameter -re ist nötig, aber die Variable realtime wurde uninitialisiert verwendet und dann -re nicht immer gesetzt. Da realtime immer true sein soll, könnte man den Code vereinfachen.

    Die Bedingung existiert nur, weil eines der (Test-)Tools, die parallel zum vdrosrbrowser gebaut werden, diesen benötigt. Ich bin mir noch nicht sicher, ob diese von allgemeinem Nutzen sind oder ob ich sie löschen kann.

    Update Plugin/Browser:

    - Videos können nun in einem Fenster (siehe Tagesschau) dargestellt werden.

    - Alt-Code entfernt und Log-Ausgaben reduziert


    Anbei ein Vorschlag, nur komplette ts-Pakete zu senden. FixSkipped.patch

    Okay. Das muss ich unbedingt ausprobieren. Aber ohne den "-re" Parameter wird das Video so schnell gewandelt, wie es die Leitung hergibt. Und seltsamerweise wurde das dann auch genauso schnell im VDR abgespielt.

    zusätzlich besteht eine gewisse Chance, das realtime nicht auf true steht beim Aufbau der der Ffmpeg-Kommandozeile.

    Es besteht eine Chance? Das muss ich mir genauer anschauen, weil die Tagesschau-Videos in Full-Speed abgespielt werden - extrem zu schnell. Vielleicht besteht da ein Zusammenhang.

    Ich denke das einfachste ist du überschreibt das Videofenster nach dem Anzeigen des OSD nochmal mit einer transparenten Fläche.

    Genau das habe ich jetzt gemacht. Und es könnte auch gut aussehen, wenn das Video nicht in extremer Geschwindigkeit dargestellt wird.

    Kannst Du die Versionen nicht in die History vom Plugin übernehmen und vielleicht auch Taggen? So findet man sich leichter zurecht, zwischen den Ständen.

    Eigentlich wollte ich eine neue Version erst taggen, wenn zumindest die gröbsten Unschönheiten weg sind. Aber ich habe die History mal gepflegt.

    500 Command unrecognized: "GETURL"

    Hmm. Browser und Plugin aktuell und trotzdem kommt die Meldung? Kannst du vorher mal "plug hbbtv ping" ausführen, ob die Verbindung überhaupt steht? Obwohl ich davon ausgehe, weil du an die aktuelle URL kommen willst.

    Das ich hbbtv bei normaler Nutzung zum tv schauen beenden muss war mir klar aber es dauert der Systemstart sehr lange bis zum Tv-Bild und es ist von vornherein gar kein umschalten möglich.

    Es gab noch alten Warte-Code, bei dem ich allerdings nicht mehr verstehe, warum der überhaupt mal drin war. Das muss ein Relikt aus alten Testzeiten gewesen sein. Startet VDR denn jetzt schneller?

    Bugfixes:

    Der Heartbeat wurde gefixed (hoffentlich) und es gab auch noch ein double-free bei der Cookie-Liste. Ich weiß nicht, warum das erst jetzt auftaucht und nicht vorher bemerkt wurde.

    Neu:

    Videos werden jetzt skaliert (z.B. Tageschau).

    Aber man sieht trotzdem nichts von dem Video :( Das OSD bzw. der OSD Hintergrund überlagert das Video.

    Den schwarzen Hintergrund (für das Video-Element) habe ich gefunden und konnte den auschalten, aber dann wurde nur die allgemeine Hintergrundfarbe sichtbar.

    Ich muss jetzt forschen, wie ich Bereiche der Seite tatsächlich transparent bekomme trotz Background-Color... Eine Lösung sehe ich darin, die OSD-Bilddaten, die an den VDR übertragen werden zu manipulieren.

    Ich weiß nicht ob es CSS-Magie gibt, mit dem man einen bestimmten Bereich der Seite transparent machen kann - ungeachtet der bestehenden Hintergrundfarbe.

    Das 188er-Video Problem ist mir jetzt auch untergekommen.

    jojo61

    Perfekt. Dann muss ich die Daten mal in echt liefern und ein wenig rumrechnen bis es passt. Auf jeden Fall klingt das machbar.

    Danke!

    Aber zuerst muss ich einen anderen Major-Bug beseitigen. Ich bin endlich dahinter gekommen, warum die Sockets teilweise Fehler liefern. Die Ursache kenne ich nicht, aber ausgerechnet im Heatbeat gibt es manchmal ein false-negative: Der Browser wird nicht gefunden, obwohl er noch läuft. Dann folgt der Restart und das Drama beginnt. Die errno von nng ist m.E. nonsens. Aber dazu muss ich eine Lösung finden.

    Der Umstieg auf tcp-Sockets lief geräuschlos und ich denke, ich werde dabei bleiben, alleine um die Probleme mit den Permissions der Socket Files zu umgehen.

    Die error Messages mit Bildfehler hatte ich auf ARD (Babylon Berlin 1. Folge) und auch auf ZDF.

    Das ist dann auch ein weiterer Punkt, der untersucht werden muss.

    there are channels which let the live picture run in scaled box, i believe it's ntv. (the browser did also crash on this channel)

    Yes. ntv is really a problem but i don't know why. And this channel seems to trigger multiple problems - including lost sockets. I'm currently thinking of changing the transport protocol from unix domain sockets to tcp sockets. I will give it a try - if i find free ports.

    But ntv also shows a strange difference between my patched hbbtv code and the chrome extension, which uses nearly the same code. The patched sources insert a <video> element, but with an empty src. And the extension does not add a <video> element at all.

    Do you know another channel, which shows live TV in a scaled box? I remember seeing this on some channels, but i'm not able to find these channels anymore. I need to investigate, what exactly happens in the page.

    [2020-06-19 22:33:23.048] [browser] [error] Send Video data, but size is not a multiple of 188: 31640

    Das ist seltsam. Äußerst seltsam. Ich hatte erwartet, die Meldung nicht zu sehen, bzw. in meinen Tests gelang mir das nicht.

    Passiert das nur bei Videos auf einem bestimmten Kanal oder ist das ein generelles Problem? Bisher ging ich davon aus (und habe es nicht anders beobachtet), daß FFmpeg nur Vielfaches von 188 liefert, wenn ich TS als Ausgabe angebe.

    So oder so. Ich muss mir dazu eine Lösung überlegen.

    Es braucht nur die Koordinaten wo es dargestellt werden soll. Skalieren macht dann das plugin.

    Nach ein paar Tests habe ich herausgefunden, wie ich an die Koordinaten des Videos komme. Ich erhalte z.B. solche Werte

    Display Spoiler
    1. DOMRect {x: 702, y: 199, width: 520, height: 291, top: 199, …}
      1. x: 702
      2. y: 199
      3. width: 520
      4. height: 291
      5. top: 199
      6. right: 1222
      7. bottom: 490
      8. left: 702
      9. __proto__: DOMRect

    var element = document.getElementById('hbbtv-polyfill-video-player');

    var position = element.getBoundingClientRect();

    Die HTML Seite hat immer eine fixe Größe von 1280 x 720. Ich habe mit einem Screenshot die Werte überprüft und die passen.

    Die linke obere Ecke des Videos ist 702/199. Die Breite 520 und Höhe 291.

    Skaliert man die Seite mit dem Faktor 1.5, dann erhält man die Full-HD Auflösung 1920x1080. Und damit wäre das Video bei 1053/298.5 mit einer Breite von 780 und einer Höhe von 436.5.

    Nur. Was mache ich jetzt damit?