Posts by Zabrimus

    Habe übrigens das hbbtv-plugin und den vdr-osr-browser wieder auf die Version v. 25.7. zurücksetzen müssen, da mit der heutigen (aus dem git) der vdr hängt, sobald vdr-live oder vdradmin-am aufgerufen wird, ab dann nur mehr svdrp-timeouts, und auch die Fernbedienung reagierte nicht.

    Leider absolut keine Meldungen im syslog dazu

    Ich denke, ich habe den Fehler im Plugin gefunden und den Fix committed. Wenn ein Test möglich ist, wäre das Klasse. Falls der Fehler noch vorhanden ist, muss ich weiter suchen.



    Ich wollte eigentlich eine kurze Anleitung schreiben, um zeigen zu können, wie man Videos direkt (ohne Durchgang durch den Browser) abspielen kann. U.a. um auch, die Probleme mit den Videos darstellen zu können. Aber entweder habe ich Halluzinationen, jemand will mich ärgern oder irgendwas ging gestern gehörig schief. Ich kann den Fehler nicht mehr nachstellen.


    Aber trotzdem mal die Anleitung:


    - VDR starten

    - ffmpeg starten

    Version 1 mit -codec copy:

    Code
    1.   ffmpeg -re -dn -i http://hbbtv-s3.n-tv.de/CPStuermer_200725172709.mp4 -codec copy -write_tmcd 0 -y -f mpegts   "tcp://127.0.0.1:5562?listen&send_buffer_size=64860"

    Version 2 mit audio transcode:

    Code
    1.  ffmpeg -re -dn -i http://hbbtv-s3.n-tv.de/CPStuermer_200725172709.mp4 -c:v copy -c:a aac -b:a 192k  -write_tmcd 0 -y -f mpegts "tcp://127.0.0.1:5562?listen&send_buffer_size=64860"

    3. Den Player im Plugin attachen:


    Code
    1. svdrpsend plug hbbtv attach


    Und das Video sollte im VDR abgespielt werden.


    Mit dem Kommando

    Code
    1. svdrpsend plug hbbtv detach

    stoppt man den Player wieder und man kommt wieder ins TV-Programm.


    Theoretisch sollte man jedes Video so darstellen können, sofern die Codecs passen, ansonsten müsste man noch Video/Audio Transcode Parameter hinzufügen.

    Du könntest ein paar Minuten der Streams auf Platte schreiben und mit mediainfo analysieren, besser wärs, wenn Du mit ffmpeg nen Unterschied im Audio Channel erkennen könntes

    Da genau liegt ja mein Problem. ffmpeg meldet irgendein Problem oder einen Hinweis, daß etwas nicht stimmen könnte oder das es Probleme geben könnte. Selbst in den Debug.Ausgaben von ffmpeg habe ich nichts finden können. ffplay und vlc spielen auch alles ohne Hinweis ab.

    mediainfo kannte ich noch nicht. Ich muß mal schauen, ob ich damit mehr Informationen bekomme.


    Habe übrigens das hbbtv-plugin und den vdr-osr-browser wieder auf die Version v. 25.7. zurücksetzen müssen, da mit der heutigen (aus dem git) der vdr hängt, sobald vdr-live oder vdradmin-am aufgerufen wird, ab dann nur mehr svdrp-timeouts, und auch die Fernbedienung reagierte nicht.

    Leider absolut keine Meldungen im syslog dazu.

    Hmm?? Ich sehe gerade so überhaupt keinen Zusammenhang zwischen vdr-live, vdradmin-am und meinem Plugin. Ich fürchte, live habe ich gar nicht und vdradmin-am müsste schon überall deinstalliert sein. Steht im Log etwas davon, daß der Browser neu gestartet wird? Und mit der Vorversion des Browsers/Plugins gibt es keine Probleme? Sehr seltsam. Ich muß zumindest ein Plugin mal wieder installieren.


    Ich habe mal per mittels "-dn" alle Datenstream ignorieren lassen. Allerdings wieder ohne Erfolg.

    Dann habe ich den Player in VDR mal per svdrpsend attached und ein rohes ffmpeg (ohne den Browser) das Video abspielen lassen. Das Ergebnis war wieder ernüchternd.

    Und dann kam ich drauf. Mit Dash-Videos hatte ich auch schon Probleme mit dem Muxen von Audio/Video und siehe da. Transcodiere ich den Audiostream von aac nach aac, spielt alles wunderbar ab.
    Wobei ich mir die Frage stelle, ob das ein Problem von ffmpeg ist oder ob der Demuxer im VDR damit nicht klar kommt? :/Ich kenne mich da zuwenig aus, um die Qualität des Streams beurteilen zu können.


    Und jetzt stehe ich vor einem Problem. Ich kann entweder Listen führen, welche Sender den Audio-Transcode brauchen oder ich mache es generell immer. Immer fände ich blöd, aber Listen führen ebenso. Aber vielleicht eine Config-Datei, in der jeder selbst entscheiden kann, ob der Transcode durchgeführt werden soll, oder nicht. So könnte man - bei mir unbekannten Sender - schnell mal etwas versuchen. Ein URL-Pattern wäre vielleicht eine mögliche Konfiguration, aber wenn die Sender was ändern.... z.B. hbbtv-s3.n-tv.de

    Ach ja. Die Videoauflösung ist etwas bescheiden bei n-tv: 688x384. Aber es sind ja nur Nachrichten und ähnliches.

    Ich habe Änderungen für den Browser und das Plugin committed. Aber das ist noch nicht Release-reif.


    Das Plugin:

    Der Startmechanismus, die Prüfung, das Killen, Restart und alles was damit zusammenhängt wurde geändert. Der Browserstart bzw. die Erkennung sollte stabiler sein. Desweiteren wurde zumindest ein Segfault beim Beenden des Browsers hoffentlich beseitigt. Die Skalierung der Ausgabe ist nicht mehr auf Videos beschränkt, sondern sollte auch mit Live-TV funktionieren - wenn der Browser endlich soweit ist.


    Der Browser:

    Die Video/Live-TV Größe wird anders bestimmt. Videos in n-tv sind nun sichtbar. Aber...

    1. Warnung! Videos bei n-tv abspielen ist noch extrem schlecht. Ich weiß schon wieder nicht, was an den Videos so besonders ist. Außer, daß ein dritter Stream vorhanden ist, mit dem ffmpeg nicht zurecht kommt:

    2. Warnung! Schaltet den Ton beim Abspielen der Videos auf n-tv leiser oder besser aus. Irgendwas muss ich mit den Videos noch machen, die Geräusche, die entstehen, sind z.T. hochfrequent und richtig unangenehm.


    Also noch nicht Release-reif. Aber zumindest das Plugin kann man schon gefahrlos aktualisieren.

    Ich versuche mich zur Ablenkung an Pro7/RTL und dergleichen. Das Plugin-Not-Found Fenster stört etwas.

    Bei mir startet leider kein Video unter YaVDR Ansible (Focal) - in der Browser.log steht recht wenig

    Wie 9000H schon erwähnt hat, scheint es ein Rechteproblem zu sein. Das movie-Verzeichnis muss da sein und der Browser muss schreiben dürfen.


    Jul 26 15:20:06 vdr vdr[2739]: [0726/152006.576655:ERROR:batching_media_log.cc(38)] MediaEvent: {"error":"FFmpegDemuxer: open context failed"}
    Jul 26 15:20:06 vdr vdr[2739]: [0726/152006.577190:ERROR:batching_media_log.cc(35)] MediaEvent: {"pipeline_error":12}

    Da bin ich gerade dran. In der Original-Chrome Extension wurde statt dem Live-TV ein Video (und mir ging der Sound irgendwann so extrem auf die Nerven) abgespielt.

    Das habe ich rausgenommen, mit der Konsequenz, das dieser Fehler jetzt kommt.


    Ich versuche gerade dafür eine Lösung zu finden.


    Jul 26 15:20:07 vdr vdr[2504]: [0726/152007.174536:ERROR:browser_info_manager.cc(560)] Timeout of new browser info response for frame process id 6 and routing id 7


    Diese Meldungen bekomme ich auch manchmal, aber ich bin noch nicht dahinter gekommen, was die Ursache ist und welche Konsequenzen das hat und wie ich das weg bekomme.

    0:0 habe ich schon versucht.

    Auch ":0.0"? Läuft denn wirklich ein X-Server? Hast Du es mal mit einem anderen User versucht (nicht root)?


    Ich habe unter bionic (mein noch-Hauptsystem) mal folgendes probiert:

    Code
    1. ps -u $(id -u) -o pid= \
    2. | xargs -I PID -r cat /proc/PID/environ 2> /dev/null \
    3. | tr '\0' '\n' \
    4. | grep ^DISPLAY=: \
    5. | sort -u

    Und dabei erhalte ich tatsächlich

    Code
    1. DISPLAY=:0.0

    Version 0.0.7 wurde getaggt, ppa baut.


    Browser:


    Plugin:

    Beide Versionen sollten unabhängig voneinander sein. Sowohl der Browser, als auch das Plugin haben keine Funktionen erhalten, die aufeinander aufbauen.


    Prosa:

    Im Plugin habe ich versucht, ein paar Fehler zu beseitigen, die unterwegs aufgefallen sind. Manchmal habe ich beim Beenden des VDR noch einen Segfault, aber ich komme nicht dahinter, woran das liegt und ob es überhaupt am Plugin liegt. Im Backtrace wird nur ein Mutex/Thread erwähnt, aber ohne weitere konkrete Hinweise.

    Im Browser habe ich versucht, MPEG-DASH Videos vernünftig abspielen zu können. Getestet habe ich es mit dem Ersten (blauer Button) und dem Live-Stream, den jsffm erwähnt hat. Es kann also noch sein, daß irgendwas nicht richtig funktioniert.

    Desweiteren habe ich versucht, die Navigation in der Tagesschau zu fixen (funktioniert noch nicht richtig gut). Ich hoffe nur, das es keine negativen Seiteneffekte gibt. ich bin durch ein paar Mediatheken gewandert und habe andere Sender probiert, aber aufgefallen ist bisher noch nichts.



    Meine Startkonfiguration sieht so aus:

    Aber gerade den Parameter für "-c" würde ich kürzen auf z.B.

    ansonsten werdet ihr mit Meldungen geflutet. Und das sind wirklich nicht wenige. Statt "--info" könnte auch "--debug" sinnvoll sein.

    Der Pfad zum Browser muss stimmen: -p <pfad>, weil das Plugin erst ein chdir in das Verzeichnis macht und dann erst den Browser startet. Das liegt daran, das CEF und sonstige Dateien im Arbeitsverzeichnis gesucht werden.

    Bei Startproblemen würde ich als Erstes immer erst schauen, ob der Browser überhaupt separat startet, z.B. mit

    Dann kann VDR gestartet werden (ohne den Parameter -s für das Plugin) um zu sehen, ob die Verbindung Plugin <-> Browser überhaupt zustande kommt und ob etwas zu sehen ist. Dies mache ich z.B. immer, um den Browser separat debuggen zu können und die Ausgaben live zu
    bekommen ohne erst ins Logfile schauen zu müssen.

    Unable to send command...


    Die Meldungen

    [hbbtv] Unable to send command...

    sind immer ein Hinweise darauf, daß vermutlich der Browser nicht läuft. Entweder nicht manuell gestartet oder der automatische Start schlug fehl und wird immer wieder versucht.


    Ein "ps fax" mit einem automatischem Browserstart sollte in etwa so aussehen:

    Code
    1. 0131 pts/3 Ss 0:02 \_ /bin/bash
    2. 26279 pts/3 Sl+ 0:02 | \_ ./vdr
    3. 26335 pts/3 Sl+ 0:00 | \_ /home/xxx/vdr-osr-browser/Release/vdrosrbrowser --trace --remote-debugging-port=9222 --user-data-dir=remote-profile --password-store=basic --logfile=/home/xxx/vdr-osr-browser/Release/browser.log --video=TCP
    4. 26360 pts/3 S+ 0:00 | \_ /home/xxx/vdr-osr-browser/Release/vdrosrbrowser --type=zygote --no-sandbox --locales-dir-path=/home/xxx/vdr-osr-browser/Release/locales --log-file=/home/xxx/vdr-osr-browser/Release/debug.log --reso
    5. 26373 pts/3 Sl+ 0:00 | \_ /home/xxx/vdr-osr-browser/Release/vdrosrbrowser --type=gpu-process --field-trial-handle=17440929770788696776,9235596887981622079,131072 --enable-features=CastMediaRouteProvider --disable-features=OutOfBlin
    6. 26377 pts/3 Sl+ 0:00 | \_ /home/xxx/vdr-osr-browser/Release/vdrosrbrowser --type=utility --field-trial-handle=17440929770788696776,9235596887981622079,131072 --enable-features=CastMediaRouteProvider --disable-features=OutOfBlinkCor

    Ich denke, das mit dem OSD und dem Live-TV war ein Denkfehler. Die Farb-Buttons (rot und ...) funktionieren. Ohne das Plugin wird im VDR auch nicht viel angezeigt. Allerdings ist die wirkliche Unschönheit, die fehlende Möglichkeit, wieder aus dem Live-TV rauszukommen.

    Aber dazu fällt mir keine gute Möglichkeit ein. Über das Menu oder den Exit Button scheint die einzige Möglichkeit zu sein, ohne die Seite selbst zu ändern.

    Der letzte Commit des Browsers implementiert das Dash-Handling (rudimentär und optimistisch). Getestet habe ich es mit dem Ersten (blauer Button) und dem Live Sender von jsffm .


    Bei dem Live-Sender muss ich ein paar Sekunden zurückspringen (ist also nicht echt live), weil ansonsten das Risiko besteht, daß die verfügbaren Segmente eingeholt oder sogar überholt werden. Und das führt zu ziemlichen Ausfällen. Wenn der Nachbar also bei der WM schon jubelt, während bei Euch der Ball sich noch im eigenen Spielfeld befindet.... Das könnte eine Ursache sein ;)


    Edit: Eine Ergänzung noch, die mich etwas stört und dessen Ursache ich nicht kenne:

    Bei dem Live-Sender habe ich gar kein OSD (nur ganz am Anfang), aber danach kommt nix mehr. Ich muss im VDR-Menu erst die Wiedergabe beenden. Ich bin mir nicht sicher ob das so richtig ist.


    Ansonsten gibt es noch ein paar Ungereimtheiten/Unschönheiten, die ich beseitigen will (oder zumindest es versuchen), bevor ich eine neue Version tagge. Und auch Meldungen, ob es überhaupt läuft kann man ja mal abwarten.


    Ich werde so langsam eine TODO-Liste führen müssen um die Übersicht über Wünsche/Fehler/Unschicklichkeiten nicht zu verlieren.

    ServusTV startet neues HbbTV-Angebot – auch in Deutschland

    Hast Du das mal getestet? Läuft es? Ich habe bekomme die neue Funktionalität noch nicht zu sehen :( Aber vielleicht ist meine URL auch schon veraltet. :/

    So. Ich bin ein Stück weiter und habe neue Erkenntnisse gewonnen.

    3600 Frames:

    Der Parameter "-follow 1" von ffmpeg funktioniert nur genau dann, wenn das FILE immer wieder neu geöffnet und geschlossen wird. Das FILE Handle zu behalten (inkl. fflush der Daten) reicht nicht aus.


    5 Sekunden:

    Das Abspielen funktioniert nahezu einwandfrei, wenn ich den Audiostream nicht kopiere, sondern wieder nach AAC transcodiere, obwohl der Ursprungscodec schon AAC ist. Irgendwas muss da etwas seltsam sein, aber zumindest funktioniert es jetzt. Und solange zumindest die Videodaten kopiert werden können, sollte das verschmerzbar sein.


    Die alte Version, bei der ffmpeg direkt das mpd File bekommt und nicht wie jetzt (uncommitted), das Segment-Handling zu Fuß gemacht gemacht wird, funktioniert auch mit dem Transcode nach AAC nicht. Also werde ich bei der neuen Version bleiben.

    Bei ARD alpha kommt "no hbbtv page found".

    Diese Meldung erscheint, wenn die Auto-URL (siehe Menu URL Liste) nicht vorhanden ist. Das ist der Grund, warum ich versuche alle URLs, die bekannt sind, in der Datei hbbtv_urls.list alle zu speichern. Z.B. dauerte es beim Ersten immer etwas lange, bis die URLs alle da waren und bis dahin konnte man den Red-Button nicht sinnvoll nutzen. Die URL-Liste habe ich z.B. erstellt, in dem ich einmal alle Sender einmal alle aufgerufen habe um dem Plugin die Chance zu geben, die URLs zu sammeln und zu speichern. Das Script dazu ist trivial und völlig ohne Fehlerbehandlung oder sonstige Raffinessen :)

    Shell-Script
    1. #!/bin/sh
    2. while :
    3. do
    4. svdrpsend chan +
    5. sleep 15
    6. done

    Vielleicht hilft es, einfach mal ein wenig länger auf den Sender zu starren, bis die URLs endlich da sind - wenn sie denn eingespeist werden. Bei mir haben nicht alle Sender gültige URLs.


    Bei diesem Bild funktioniert der Fullscreen-Button nicht.


    Das muss ich mal ausprobieren, aber im Moment treibt mich das Dash-Problem in den Wahnsinn :(


    Zum Dash-Problem habe ich unterschiedliche Fehlerbilder, die nicht zusammen passen.

    Die Liste der Segmente habe ich, die Segmente werden auch alle x Sekunden heruntergeladen und in einer Datei gespeichert. Das klappt ganz gut. Allerdings wird das Programm angezeigt, das exakt 2 Stunden vorher lief. Aber das Problem lässt sich wahrscheinlich durch ein wenig Arithmetik lösen, wenn das richtige Startsegment berechnet wird.


    Zu den Fehlerbildern, die ich nicht verstehe und für die ich noch keine Lösung habe. Dazu muss man wissen, daß der Video-Stream und der Audio-Stream separat geladen und gespeichert werden.

    • Starten von ffmpeg mit -i <videodatei> -i <audiodatei> -codec copy
      Das Videobild ist nach exakt 5 Sekunden gestört (wiederholbar und immer 5 Sekunden). Das berappelt sich nach einiger Zeit, wird aber nie richtig gut.
    • Starten von ffmpeg mit -i <videostream> -codec copy (also ohne audiostream)
      Perfekt. Das Bild passt und ist ohne Fehler, aber halt ohne Ton
    • Der Stream bricht nach exakt 3600 Frames ab - in beiden Varianten

    Starte ich ffmpeg auf der Kommandozeile mit den bereits gespeicherten Video/Audio-Dateien funktioniert alles einwandfrei.

    Also dachte ich, es liegt vielleicht daran, daß das File weiter geschrieben wird, während ffmpeg daraus liest. Der Parameter "-follow 1" bringt aber auch nichts.

    Es scheint also ein Problem mit der Datei zu sein, die fortlaufend geschrieben wird und dem Muxen von Video/Audio.


    Erschwerend kommt hinzu, daß ich bereits mindestens 1 Minute Video/Audio gespeichert habe, bevor ffmpeg überhaupt aufgerufen wird. Woher kommen also die 5 Sekunden? Und warum klappt es auf der Kommandozeile?


    Ich verstehe es nicht mehr. Ich habe auch schon versucht das Segment-Init vor jedes einzelne Segment zu schreiben oder ganz weg zu lassen - ohne Erfolg. Es bleibt bei den 5 Sekunden bei Video/Audio.


    Ein paar wenige Ideen sind noch vorhanden, aber wenn die auch nix bringen...? =O

    Ich probiere immer noch in DVB-T einen Sender zu bekommen, der nur über Internet geht, jetzt bekam ich folgendes:

    Ich wollte mal herausfinden, was für deinen Sender noch fehlt und mal abgesehen von den obigen Problemen (Bildfehler, Buffer und so) wird der Sender (WDR HD) bei mir abgespielt. Kannst Du das bestätigen?

    Es scheint gerade so, als ob ich 2 Fliegen mit einer Klappe schlagen könnte.

    Ich habe angefangen, mich um mpeg-dash zu kümmern. Der letzte Commit (im Plugin und Browser) geht in die Richtung.

    Aber bevor Fehlerberichte kommen: Die aktuelle Version ist nur sehr bedingt brauchbar. Ich fürchte, der ffmpeg MPEG-DASH Buffer ist nicht groß genug oder gar nicht vorhanden. Die Bildfehler sind kein wirkliches Vergnügen.


    In der mpd-Datei gibt es einen Hinweis für eine sinnvolle Größe des Buffers:

    Code
    1. minBufferTime="PT8S" suggestedPresentationDelay="PT20S"

    8 Sekunden Buffer und das Video erst nach 20 Sekunden präsentieren. Wie das zusammenpasst... Keine Ahnung.

    8 Sekunden (das waren ca. 2,x MByte) sind auch genau die Länge, die ein Segment beinhaltet (zumindest beim Ersten).


    Die Segment-URL Liste habe ich bzw. kann ich bereitstellen. Nur wie puffer ich das Ganze jetzt? Zwischenspeichern in einem File und ffmpeg daraus lesen lassen? Das hätte das Problem, daß das File entweder sehr groß wird, oder ich müsste ffmpeg geschickt neu starten. Aber an den Filegrenzen wird das nicht so ohne weiteres klappen.

    Die Segmente ffmpeg direkt vor die Füsse werfen und dann weiter senden lassen? Über eine Pipe, die dann permament gefüllt wird. Wobei ich hoffe, daß bei einem vollem Pipe-Buffer die Schreiboperation geblockt wird? Also hoffen, daß ffmpeg nicht mehr einliest, als es zu senden hat (realtime, -re)?


    Das File hat ziemliche Vorteile, aber eben den Nachteil, daß genug Platz auf der Platte sein muss. Andererseits nutzen wir den VDR und die Aufnahmen brauchen auch Platz. Ich müsste also erstmal etwas schreiben, warten und dann ffmpeg starten und aus dem File lesen lassen.

    Aber auch das Schreiben (bzw. aus dem Netz lesen) sollte nicht zu schnell sein, weil ansonsten die verfügbare Bandbreite wohl komplett verbraten wird.

    Oder gibt es andere Ideen?

    Die Meldungen sollten nur kommen, wenn der Browser nicht läuft. Zwischen der 0.0.5 und 0.0.6 hat sich am Startmechanismus nichts getan.

    Startet der Browser standalone? Ich habe nach der 0.0.6 noch das Videostreaming im Browser per default auf UDP gesetzt (falls kein Parameter angegeben wurde), aber das sollte das Plugin erledigen.

    bei mir funktioniert das spulen bei TCP nicht (dIe Uhr läuft, aber kein Bild).


    Seltsam. Ich habe gerade noch einmal verschiedene Videos probiert und fand keine Probleme.
    Findest du im syslog Meldungen bei einem Sprung Meldungen der Art

    Die alte Verbindung wird geschlossen und eine neue sollte hergestellt werden. Bei einem Fehler sollte zumindest ein Hinweis im syslog zu finden sein.


    Kein Bild... die TCP-Verbindung scheint nicht zu bestehen. Funktioniert es denn mit den anderen beiden Varianten?

    this is related to the startup param --user-data-dir= which should be a real directory.

    I've tried both: Setting the parameter in the main class and also starting the browser standalone with the additional parameter. But both attempts doesn't solve the problem (at least in my environment).


    After searching and reading the whole internet i came arround the root cause for this problem. It has something to do with DBUS configuration in Chrome and libdbus itself. See main.cc of Chrome. Some more explanation can be found here. And the comment in this code part makes me a little bit nervous.

    If I start the browser with

    the message don't appear anymore. But i don't really know, if this has some bad implications or causing new problems. On the other hand i don't know, if the message and behaviour causes other problems. This seems to be a loose-loose situation.

    I can add an additional command line parameter to the plugin, which enables/disables the env variable while starting the browser. But it could be a risk to set the parameter and also to not set it.

    Version 0.0.6 wurde getaggt. Das ppa baut gerade.


    Der Fehler mit den Sprüngen im Video und der Änderung der Auflösung sollte beseitigt sein. Zusätzlich ist auch

    the new plugin option "-v UDP" is missing then there seem to be the default UDP is not working.

    gefixed.


    the html encoding seem to also not right

    I'm not playing with character encoding at all. But i will try to find out, what's happening there.


    Nachdem ich jetzt alle 3 Varianten (UDP, TCP, Unix domain sockets) für den Fix wieder testen durfte, muss ich sagen, die TCP Variante gefällt mir mit Abstand noch am Besten. Es gab kaum Bild-/Tonfehler.