Erweiterte Bedienkonzepte für Kodi

  • Hallo,

    ich hätte ein paar Fragen bezüglich Kodi

    Einerseits fehlt mir (bin von MediaPortal 2 gekommen) eine Möglichkeit für Bild-in-Bild. Zwar ist der TV-Unterbau immernoch Mediaportal (der Server kann also Bild-in-Bild mit vier TV-Karten). Jedoch habe ich keine Möglichkeit gefunden das zu verwenden. Gibt es dass und darüber hinaus war das bei Mediaportal bei allen Medien so. Mann konnte also in der Werbepause auch mal ein LibRetro-Spiel benutzen und im kleinen Bild verfolgen, wann die Sendung wieder weitergeht.

    Ein anderer Punkt. Ich habe mittlerweile mehrer Kodi-Installation im Haus [Wohnzimmer (Windows 10 Pro mit vielen Spiele), Küche (Raspberry Pi 3B+, Schlafzimmer (Windows 10 Pro)]
    Ist es möglich die Medienwiedergabe in Echtzeit auf ein anderes Gerät zu haben (Streaming oder direkte Wiedergabe synchronisiert). Hintergrund ist der, dass man z.B. im Wohnzimmer gerade was mit er Familie anschaut und einer müsste jetzt was kochen. Damit nicht die ganze Familie zum pausieren verdammt ist, kann der Kocher dann zeitgleich z.B. in der Küche weiterschauen. Alle Geräte sind per Netzkabel verbunden.4

    Mein Verständnis von der Machbarkeit: Magic Paket an die LAN-Schnittstelle des Ziel-Kodi senden zum einschalten. Nach dem Einschalten den gleichen TV-Kanal einschalten oder gleichen Film an der selben Stelle. Gibts sowas oder sind meine Ansprüche da zu hoch.

    Ein weiterer Punkt den ich vermisse. Den synchronisierten Status der geschaut Zustände. Hatte das bei Mediaportal 1 über Trakt gemacht (bei sofortiger Synchronisation), Mediaportal 2 ist vom Kozept so, dass dies über die Server-Client-Architektur Out-of-the-Box geht. Bei Kodi hab ich zwar auch Trakt aber der Sync klappt nicht, oder nur stark zeitverzögert.

    Freue mich auf Vorschläge von Euch.

  • Ist es möglich die Medienwiedergabe in Echtzeit auf ein anderes Gerät zu haben (Streaming oder direkte Wiedergabe synchronisiert).

    Nein, ist mit Standardmitteln nicht möglich. Ein LMS (Logitech Media Server) kann Music, wie auch Videos synchron abspielen. Ich hatte das mal vor ner Ewigkeit laufen aber nur mit Music. Das ist dann aber nur noch bedingt "Kodi", da dafür auch sein Squeezelite Add-on benötig wird. Also alles nicht das Wahre. Von daher sage ich mal "Nicht möglich"

    Den synchronisierten Status der geschaut Zustände.

    Sowas geht auch über eine MySQL Datenbank. Dann sind alle Kodi Clients immer auf dem gleichen Stand. Auch was den "gesehen"-Status angeht.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Ich nutze sowas nicht, aber ein Freund nimmt eine App auf dem Phone um Kodi zu kontrollieren. So eine app koennte ja wahrscheinlich problemlos befehle an mehr als einen Kodi senden, solange die halt alle die gleichen medienquelllen (TV und fileysteme) haben.

    Weiss nicht genau was so eine app genau fuer eine API zu Kodi hat, denke mal das ist irgendwas HTTP/REST-artiges. Da sollte es ja auch moeglich sein, statt die Anwendung auf dem Phone zu veraendern, eine Art proxy-server zu schreiben, der fuer die App wie das Kodi aussieht, aber der dann alle Befehle einfach nur dupliziert und an die beiden Kodis schickt. Und halt rueckmeldungen nur vom "master-kodi".

    Weiss nicht ob man was aehnlich modulares ohne eine separarte fernbedienapp machen kann. Muesste man am Server-Kodi halt irgendwie ausreichend [definition=12,8]Logging[/definition] einstellen, dass alle relevanten Benutzereingaben verfuegbar sind (medium start/stop, trick-play), dann kann man ja versuchen diese Logs in fernbedienungsefehle fuer den zweiten Kodi umzubbauen.

  • Das sind doch alles Kleinigkeiten, da hat sicher jeder andere Vorstellungen was rein muss... mir würde zb 2-Player-Support und Diskwechsel einfallen, wenn die schon Spielmöglichkeiten einbauen

    Oder Multithreading, damit kein defektes Addon oder eine defekte xml-Einstellungsdatei KODi nicht mehr booten lässt. KODi lässt sich zu leicht zum Abstürzen bewegen

    Mal hoffen dass sich das Team auch nicht verzettelt, wenn immer mehr Funktionen reinkommen

  • Der Sinn meiner Antwort war es einen Weg aufzuzeigen bei dem man nicht Kodi veraendern muesste, noch nicht mal ein plugin braeuchte, sondern das Problem mit Code komplett ausserhalb von Kodi loest.

    Weiss doch, wie ewig die Wunschliste ans Kodi team ist. An die wuerde ich nie mehr was anhaengen wollen was nicht wirklich extrem wichtig ist.

  • Ich nutze sowas nicht, aber ein Freund nimmt eine App auf dem Phone um Kodi zu kontrollieren. So eine app koennte ja wahrscheinlich problemlos befehle an mehr als einen Kodi senden, solange die halt alle die gleichen medienquelllen (TV und fileysteme) haben.

    Weiss nicht genau was so eine app genau fuer eine API zu Kodi hat, denke mal das ist irgendwas HTTP/REST-artiges. Da sollte es ja auch moeglich sein, statt die Anwendung auf dem Phone zu veraendern, eine Art proxy-server zu schreiben, der fuer die App wie das Kodi aussieht, aber der dann alle Befehle einfach nur dupliziert und an die beiden Kodis schickt. Und halt rueckmeldungen nur vom "master-kodi".

    Weiss nicht ob man was aehnlich modulares ohne eine separarte fernbedienapp machen kann. Muesste man am Server-Kodi halt irgendwie ausreichend [definition=12,8]Logging[/definition] einstellen, dass alle relevanten Benutzereingaben verfuegbar sind (medium start/stop, trick-play), dann kann man ja versuchen diese Logs in fernbedienungsefehle fuer den zweiten Kodi umzubbauen.

    Es gibt ja zwei Kodi-Apps für Android Kodi selbst und Kore (Fernbedienung auch mehrer Installationen möglich). Damit löse ich jedoch nicht das Problem des Einschaltens (geht nämlich nur bei breits eingeschalteten Kodi. Ebenso findet nicht der Sprung zur bestehenden Stelle der ersten Installation statt. Davon abgesehen nutze ich zur Steuerung überwiegend eine Logitech Harmony 900

  • Es gibt ja zwei Kodi-Apps für Android Kodi selbst und Kore (Fernbedienung auch mehrer Installationen möglich). Damit löse ich jedoch nicht das Problem des Einschaltens (geht nämlich nur bei breits eingeschalteten Kodi. Ebenso findet nicht der Sprung zur bestehenden Stelle der ersten Installation statt. Davon abgesehen nutze ich zur Steuerung überwiegend eine Logitech Harmony 900

    ok. Es muss natuerlich die Moeglichkeit geben rauszufinden, an welcher stelle ein playback anfangen soll, und die Moeglichkeit ueber die Fernbedienungsschnitte dem Kodi mitzuteilen, dass er ab einer bestimmten stelle widergeben muss. Oder halt zu einer stelle zu jumpen direkt nach start des abspielens.

    Wie gesagt, ich habe nicht behauptet das das alles geht, war nur brainstorming um zu ueberlegen, ob man das Problem ausserhalb von Kodi geloest bekommt.

  • Es muss natuerlich die Moeglichkeit geben rauszufinden, an welcher stelle ein playback anfangen soll,

    die momentan laufenden Filme(und Zeit) kann man einfach per JSON RPC Request rausfinden. Aber von Synchronen abspielen ist das weit entfernt.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Naja, wieviel (u)sec abweichung bezeichnest du noch als synchron.

    IMHO, fuer abspielen in einem anderen Raum sind < 5 sekunden ok, und das sollte man dann wohl hinbekommen.

    Klar, so wie LMS, dass der Ton synchron ist braucht wohl < 10 msec. Dafuer koennte man vielleicht
    a) erwarten dass die Abspieler zeitsynchronisation haben ( bis zu 1 msec is ntp eigentlich kein problem).
    b) wenn man so eine api hat, mit der man abspielstand bekommt, dann sollte da halt ein timestamp mit angegeben werden. Wenn man dann auf dem zweiten geraet den befehl angibt "ab dieser stelle abspielen, dann gibt man auch den timestamp an, dann kann der abspieler entsprechend ausrechnen wo er anfangen muss damits synchron wird"

    aka: so schwierig ist das alles nicht. schlimmer schon, wenn da nach einer stunde oder so zwei abspieler auseinanderlaufen, aber da weiss ich im moment nicht wie gross das risiko ist.

  • Ich nutze sowas nicht, aber ein Freund nimmt eine App auf dem Phone um Kodi zu kontrollieren. So eine app koennte ja wahrscheinlich problemlos befehle an mehr als einen Kodi senden, solange die halt alle die gleichen medienquelllen (TV und fileysteme) haben.

    Wenn das so einfach wäre ;) .... Ich könnte ja jetzt schon ein Script schreiben, welches Befehle an 2 Kodi Clients schickt und dafür dann JSON benutzen. Das ist ja nicht das Problem. Das Problem ist halt, dass überall, sei es nun eine App, ein Script oder ein Addon, diese Kommandos nacheinander abarbeitet und somit muss es eine weitere Instanz geben, die darauf achtet, dass beides auch 100% synchron läuft. Bei einem Film mag das vielleicht noch nicht so relevant sein, wenn es mal ne Sekunde "ausm Takt" ist, da der eine vielleicht im Wohnzimmer und der andere im Schlafzimmer ist. Bei Musik, die ich im ganzen Haus hören könnte sieht das aber schon anders aus, wenn alle betroffenen Clients nicht synchron sind. Das Problem ist nicht das Triggern des Befehls, sondern das synchronisieren untereinander. ;)


    wie geht das mit der mySQL-Datenbank - Wusste gar nicht, dass Kodi mySQL nutzt oder nutzen kann. Gibts da irgendwo ein Tutorial?

    Kodi nutzt von Haus aus eine SQLLite Datenbank, kann aber auch auf eine MySQL zugreifen, wenn du mehrere Kodi Clients hast. Vorzugsweise läuft die MySQL Datenbank dann auch auf dem Gerät, auf dem deine Filme, Serien, Musik liegen. Eine Option wäre eine MySQL auf einem NAS laufen zu lassen.
    Kodi hat die [definition='2','1']advancedsettings[/definition].xml die du entsprechend konfigurieren kannst um dann auf diese MySQL Datenbank zurück zu greifen.

    Ein Anwendungsfall:

    Was ist gegeben:

    - ein Kodi Client in deinem Arbeitszimmer (alpha)
    - 2 weitere Kodi Clients (einen im Wohnzimmer (beta) einen im Schlafzimmer (ceta) )
    - ein NAS welches deine Daten vorhält und auf dem denie MySQL Datenbank läuft

    Dein "Alpha" dient nur dazu Filme, Serien und Musik zu Scrapen. Dafür braucht "Alpha" die entsprechenden Quellen, einen Scraper und Zugriff auf die MySQL Datenbank um die gescrapten Daten dann in die entsprechende Datenbank schreiben zu können. Dieser Client, also "Alpha", macht mehr oder minder nichts anderes wie Daten zu der MySQL hinzuzufügen. Natürlich kann er auch als Player verwendet werden, ist aber vielleicht nicht seine Hauptaufgabe.

    Auf "Beta" und "Ceta" brauchst du in dem Fall gar keine Quellen einzurichten. Das sind reine "User". Also die, die die MySQL benutzen und die Infos darin lesen. Das machen sie auch permanent. Das heißt, schaust du einen Film auf "Alpha" oder "Beta" und schaust den auch zu Ende an, gehst dann ins Schlafzimmer, schaltest "Ceta" ein, dann wird "Ceta" dir anzeigen, dass dieser Film, den du auf "Alpha" oder "Beta" gesehen hast als "gesehen" markiert ist. Es ist auch möglich auf "Beta" einen Film anzufangen, mittendrin zu stoppen, "Beta" auszuschalten und ins Schlafzimmer zu gehen, dort "Ceta" einschalten und den gleichen Film an exakt der Stelle fortzusetzen, wo du bei "Beta" aufgehört hast.

    Gesehen Stati und Resume-Points werden also Client-weit geteilt. Man benutzt also eine zentrale Datenbank auf die alle Clients zugreifen können.

    Machst du es so wie hier beschrieben ist aber "Alpha" der einzige Client, der neue Daten in die MySQL schreiben kann, da das der einzige ist, der Quellen eingerichtet hat. Sollen alle Clients auf die MySQL schreiben können, musst du auf allen auch die Quellen einrichten.

    Siehe auch: https://kodi.wiki/view/MySQL

    Das wichtigste in dem Fall ist, dass auf ALLEN Kodi Clients dabei die gleiche Kodi Version läuft. Kodi 17 im Schlafzimmer und Kodi 18 im Wohnzimmer geht dann nicht.

    Naja, wieviel (u)sec abweichung bezeichnest du noch als synchron.

    IMHO, fuer abspielen in einem anderen Raum sind < 5 sekunden ok, und das sollte man dann wohl hinbekommen.

    Wir reden ja hier nicht von Millisekunden.

    Wenn wir mehrere Clients haben, die synchron abspielen sollen, heißt das auch, dass es einen Netzwerkspeicher geben muss von dem die Clients ihre Daten lesen. Dann bekommen auf einmal alle Clients (ggf. 10 Kodi Clients) den Befehl "Enter Sandman" abzuspielen. Dann greifen (z. B.) 10 Clients auf den Netzwerkspeichen zu und wollen das Lied starten. Das muss erstmal von der NIC des NAS bewältigt werden und ich rede jetzt gerade nur von der Anfrage der Clients (Kodi play Lied "XYZ" auf 192.168.0.150:/daten/musik/Metallica/Black/Enter_Sandman.mp3).

    Dann kommt noch hinzu, dass man verschiedene Arten von Clients haben kann (1-4 x86 PCs aus den unterschiedlichsten Jahren mit unterschiedlichen CPUs die auch unterschiedlich ins Netzwerk eingebunden sind (WiFi, LAN), 1-4 RPis (Rpi2 oder RPi3...der eine nutzt WiFi, der andere LAN ... etc....) das heißt, die Geräte arbeiten unterschiedlich schnell und greifen daher zu unterschiedlichen Zeiten auf die angeforderten Daten zu bzw. die Übertragung der Daten über LAN oder WiFi dauert schon unterschiedlich lang. Das wird schon dazu führen, dass das ganze nicht mehr synchron läuft.

    Bin ich jetzt also in meiner 100m² Bude und ich kann grundlegend die Musik in moderater Lautstärke in der ganzen Wohnung von meiner Anlage im Wohnzimmer hören, entscheide mich aber dennoch dazu mehrere Kodi Clients einzusetzen um in allen Räumen die gleiche Musik hören zu können, werden sich die "Hörbereiche" überschneiden. Das heißt ich höre ggf im Flur die Musik aus dem Wohnzimmer, dem Schlafzimmer, dem Bad und dem Ankleidezimmer gleichzeitig. Ich würde Pickel kriegen, wenn das mehr als 20 millisekunden außer Takt ist. Das wäre dann nämlich nichts anderes als ein einziger Musikbrei und man würde eigentlich gar nichts mehr hören können bzw. irgendwie definieren können, wo wir im Lied gerade sind.

    Synchron ist halt synchron (zeitgleich auf die Millisekunde). Mit einer App kann ich ohne weiteres innerhalb den von dir angegebenen Sekunden (5) einen Inhalt auf 2 verschiedenen Geräten triggern, das geht auch per Bash/Batch-Script von einem Rechner aus. Da sind wir, wie @SkyBird1980 schon ganz richtig sagte, MEILENWEIT!!! von "synchron" entfernt.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • - Ich kriege die Uhrzeit auf verschiedenen Systemen auf >= 1 msec synchronisiert.
    - Wenn ich einmal weiss dass ein Kodi (nennen wir es den master) zu einem timestamp der auf eine msec genau ist, einen auf einer festplatte liegenden film einen offset X hat, der auch auf die msec genau angegeben ist -> dann kann ich diese information den anderen abspielern geben, und die koennen sich dann darauf synchronisieren.

    Das der Medienserver natuerlich die Performance haben muss, N-mal die daten zu streamen versteht sich von selbst. Aber wenn der server die plattenperformance hat, N unabhaengige filme streamen kann, dann kann er noch viel einfacher N-mal genau dieselben mediensegmente eines films nahezu gleichzeitig streamen. Da ist dann naemlich eine hohe chance dass die noch im file system cache sind.

    Aka: wenn du da nur auf ein paar sekunden genau sein willst geht es mit meinem ersten vorschlag denke ich, wo man nicht weiss zu welchem zeitpunkt ein abspieler einen bestimmten offset hat. Um besser zu sein, auf eine msec muesste man sowol ein get(film-offset,local-timestamp) machen koennen, als auch sein (set film-offset,local-timestamp).

    Das radio was bei mir uebers internet und LMS auf logitech radio geht im wohnzimmer ist immer ca. 6 sekunden hinterher gegenueber dem alten analogradio am bett (das hat halt nett einen outdoor-thermometer-empfaenger drin, deswegen will ich das nicht aufgeben). Und ich lebe immer noch , obwohl das schon schmerzgrenze ist wenn man zwischen den raeumen hin und herlaeuft ;-))

  • Wenn ich einmal weiss dass ein Kodi (nennen wir es den master) zu einem timestamp der auf eine msec genau ist, einen auf einer festplatte liegenden film einen offset X hat, der auch auf die msec genau angegeben ist -> dann kann ich diese information den anderen abspielern geben, und die koennen sich dann darauf synchronisieren.

    Ja, an sowas dachte ich auch.

    Schreib ein service Addon dazu ;). Ich bin in Python nicht ganz so fit

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

Jetzt mitmachen!

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