[kodi 17] plugin.amazon.prime reloaded

  • Einleitung

    Mit Kodi 17 kommt eine neue Schnittstelle zum Einsatz, die es Entwicklern ermöglicht, Video / Audio / Teletext / Untertitel Streams innerhalb Kodi abzuspielen, ohne dass Kodi genau kennen muss, wie diese Daten ursprünglich vorlagen - inputstream.
    Über inputstream werden Packetdaten, also so ziemlich die kleinste Einheit eines Streams, an Kodi gesendet und Kodi macht daraus das was es hervorragend kann: aufbereiten, synchronisieren und anzeigen.

    Wie viele von euch mitbekommen haben werden, stellen viele Streaming Dienste wie amazon / netflix / skygo ihre Technik auf ein neues Konzept um: Adaptives Streaming.
    Kurz erklärt: Ein Film wird in unterschiedlichen Auflösungen und Qualitäten abgespeichert, und der WebBrowser entscheidet je nach Situation, welche Qualität bestmöglich dargestellt wird.
    Um einen weichen Übergang bei einem Wechsel zu ermöglichen, liegt jede der o.g. Streams in gleichen, kurzen Abschnitten vor (i.d.R. 2 Sek) vor, welche jedoch perfekt zueinander passen.
    Mit 2 aufeinanderfolgenden sog. "Fragmenten" aus unterschiedlichen Auflösungen / Qualitäten erreicht man einen fast unsichtbaren Übergang.

    Die Information, in welchen Qualitäten / Auflösungen / Sprachen / etc die Streams vorliegen, wird in der regel in sog. manifest Dateien definiert.
    Hier gibt es leider viel Wildwuchs, es gibt Standards, die jedoch nur wenige Nutzen, aber auch Standards werden mit nicht konformen Inhalten ergänzt.
    Dies ist mit der Hauptgrund, warum Kodi keine DASH streams im Core haben möchte, es müsste alle Nase lang im Core gewerkelt werden.

    @mapfau (https://github.com/mapfau/inputstream.mpd/) hat nun ein inputstream addon geschrieben, welches das manifest von einigen Anbietern lesen kann: inputstream.mpd.
    Dieses inputstream.mpd addon bekommt eine manifestdatei als Eingabe und holt sich alle erforderlichen Video / Audioinformationen und liefert diese an Kodi.
    Dieses Addon ist im offiziellen kodi repo enthalten und wird bei einer Installation in der Regel mit installiert.

    Das o.g. Addon kann sehr gut die manifest Dateien, die bei amazon im MPEG DASH Format vorliegen, lesen, eins wird jedoch nicht unterstützt: DRM (Digital Rights Management)
    Es geht hier um die Tatsache, dass Amazon seinen Streams verschlüsselt ausliefert, und nur mit einem richtigen Schlüssel, den ihr auch nur bekommt wenn ihr angemeldet seid(!!), können diese Streams entschlüsselt werden.

    ***********
    Was wird benötigt

    Hierzu habe ich einen "Wrapper" implementiert, der die DRM Inhalte mithilfe der widevine Technologie entschlüsselt. Widevine ist Bestandteil des Chrome Browsers und wird als separate "Shared library" ausgeliefert.
    Unter windows heisst diese Datei widevinecdm.dll, unter linux libwidevinecdm.so und unter OSX libwidevinecdm.dylib.
    Der Wrapper trägt unter Windows den Namen ssd_wv.dll, unter linux libssd_wv-lib unter OSX libssd_wv.dylib.

    Der Wrapper muss kompiliert werden, die widevine Datei nach einer erfolgreichen Chrome installation gesucht werden und beide Dateien in einen Ordner kopiert werden, damit der wrapper diese Dateien finden kann.

    Windows: C:\Users\[name]\AppData\Roaming\Kodi\cdm\
    Linux: ~/.kodi/cdm/
    OSX: ??

    Es gibt bereits einige seriöse Quellen, welche den wrapper [lib]ssd_wv kompiliert haben, ich werde diese Quellen hier nachträglich nennen sobald ich mir einen Überblick verschafft habe (oder sich jemand meldet).
    Für mache Systeme gibt es auch bereits vollständige Packete ( Milhouse z.B.) die bereits mit dem wrapper ausgestattet kommen.

    ************
    Selber kompilieren von ssd_wv.dll

    - git clone https://github.com/liberty-developer/inputstream.mpd
    - cd wvdecrypter
    - cmake .
    - make [-j4]

    ************
    Das Amazon Addon

    In meinem git repo (https://github.com/liberty-developer/) gibt es ein plugin.video.prime_instant Plugin,welches ich rein zum Testen verwendet habe.
    Es kommt ursprünglich von @AddonScriptorDE und ist voll mit Fehlern und wird nicht wirklich weiterentwickelt.
    Bitte verwendet / supported das Addon von @Sandmann (einfach mal hier in kodinerds suchen) !

    Zu finden ist alles in meinem repo:

    https://github.com/liberty-developer/

    libdev.

  • Oh wow... WARUM HAB ICH DAS ERST JETZT GELESEN?!?!

    Wenn das eine Allgemeinlösung für alle Dash Streams sein sollte, gibt es praktisch keine Einschränkungen mehr, was VOD-Webseiten angeht. Das wäre ein riesen Durchbruch, gleichzusetzen mit librtmp.

    Neben Amazon dürfte auch Netflix (nur 720p) funktionieren - hoffentlich mit 5.1 Sound. Youtube wird in 4k incl. 3D laufen, dazu noch die privaten Fernsehsender, Hulu und viele weitere.

    Wenn dies klappt, wäre Krypton eines der bedeutendsten Releases seit langem (wenn da auch noch libretro käme...).

  • @membrane ja, du hast es in der Tat richtig erkannt - es sind alle stream varianten verfügbar, die in mpd geliefert werden und das sind einige.
    Für kodi ist das in der Tat ein grosser Sprung nach vorne. Adaptives Bitrate switching ist wohl auch in Arbeit wenn ich das richtig sehe.

    Wenn es der Orginalautor (@mapfau) nicht einbaut, ist das ziemlich schnell gemacht.

  • @piet Das binäre addon (inputstream.mpd) decrypted lediglich die kodierten daten und gibt diese dann direkt an kodi.
    kodi macht dann das dekodieren genau so als ob es ein ganz normaler mp4 stream wäre (h/w, ffmpeg ....) und die Darstellung.

    Das addon läuft mit 10MB speicherbedarf und 0.2%CPU, es ist für alle systeme, auch RPI's one Einschränkungen verwendbar.

  • h wow... WARUM HAB ICH DAS ERST JETZT GELESEN?!?!

    Wenn das eine Allgemeinlösung für alle Dash Streams sein sollte, gibt es praktisch keine Einschränkungen mehr, was VOD-Webseiten angeht. Das wäre ein riesen Durchbruch, gleichzusetzen mit librtmp.

    Neben Amazon dürfte auch Netflix (nur 720p) funktionieren - hoffentlich mit 5.1 Sound. Youtube wird in 4k incl. 3D laufen, dazu noch die privaten Fernsehsender, Hulu und viele weitere.

    Das wäre die News des Jahres! Liest sich jedenfalls suuuuuper! :thumbup:

    Nvidia Shield TV Pro 2015/2019| Omega | HorizonzV
    Zbox ID83 | i3 | 8 GB Ram | SSD M4 64GB | Libreelec Omega | Estuary Mod 2
    Zotac Zbox Ad02 | 8 GB Ram | Libreelec 9| Madnox
    AMD Ryzen 5 3600 | 16GB | Radeon RX5500 XT Win 10 x64 | Pegasus Nightly | Viele Skins zum Probieren
    NAS Synology DS 216+II 16TB DSM 7.2
    Fire Cube 3 | Omega | Metropolis
    Tanix TX3 4/64 GB | Corelec Omega | Estuary Mod

  • Das klingt wirklich absolut vielversprechend.
    Der Workaround über den Browser bzw. direkt ein Android- System zu nehmen gefällt mir absolut nicht.
    Ich werd jetzt erstmal die Beiträge verschlingen.
    Danke für die Infos!

    lg fuenfzigccm

  • Aber nicht für dieses Addon hier. Es geht hier gerade darum KEINEN eigenen Player zu installieren sondern die jahrelange, sehr performante Entwicklung des kodi cores zu nutzen.

    - H/W Decoder
    - Sync zwischen Audio / Video
    - Seek
    - vieles, vieles mehr.
    - Ambient light

    Das alles nochmal für einen eigenen Player zu entwickeln seh ich gar nicht (ein) :)
    Ist doch perfekt so wie es in kodi drin ist...

  • Kurze Info:

    - ich habe den xbmc tree gestern intern rebased und gesehen, dass ein neuer Skin in krypton hinterlegt ist. Ich werde heute diesen tree in meinem repo aktualisieren

    - ich werde heute mal ein batch skript erzeugen, welches die Schritte der Addonerstellung mit einem Klick erledigt (erstmal nur für windows)
    Wenn sich das dann jemand schon einmal anschauen will, ist es einfacher - die Installation eines binären addons ist ziemlich gruselig.

  • - der kodi xbmc tree im repo https://github.com/liberty-develper ist nun auf dem Stand von gestern, also inkl, der neuen default Skin
    Beim Windows build wird ein Fehler geworfen in einer automatisch generierten Datei, an der Fehlerstelle einfach ein .c_str() anhängen.

    - im inputstream.mpd repo existiert nun eine configure.bat Datei, die macht soweit alles fertig, was fürs addon zu tun ist.
    Am Anfang der Datei stehen nochmal die Schrite, die gemacht werden müssen.
    Die configure.bat ist für Windows builds in Visual Studio 12 gedacht. Für nichts anderes.

    Ich werde in Kürze auch noch eine configure.sh nachlegen, die dann für linux funktioniert.

    2 Sachen noch:
    - Seek backwards hat Probleme
    - Audio Change funktioniert nicht (kodi wählt by default Dolby aus)

    Für beide Punkte hoffe ich, dass die kodi Entwickler bald etwas nachlegen.

  • So, es hat sich in den vergangenen Tagen einiges getan:

    - das neue interface inputstream ist im aktuellen kodi branch drin
    - das dash addon ist jetzt auch im offiziellen kodi repository

    Das bedeutet erstmal, dass kodi in den aktuellen nighly builds ab morgen DASH fähig ist.

    Das bedeutet aber noch nicht, dass wi..vi.. gecrypteter content wie amazon darauf sofort läuft.
    Hierzu braucht es einen decrypter, der die codierten videos entschlüsselt.

    Das inputstream.mpd addon wurde um eine Schnittstelle erweitert, welche externe decrypter zulassen.
    Ich habe daher für diesen Fall genau so einen implementiert - er findet sich im inputstream.mpd repo.

    Für die Entwickler unter euch:
    - inputstream.mpd clonen (kodi sourcen müssen NICHT vorliegen).
    - einen build ordner anlegen, reingehen und dann mit cmake entweder linux Makefile oder VS sln erzeugen
    cmake [path_to_wvdecrypter] [-G "VisualStudio...."]
    - make (linux) oder .sln öffnen
    - es entsteht eine ssd_wv.dll/so, also eine dynamische Bibliothek
    - diese einfach zjsammen mit der wi..vi..cdm.dll in den kodi ordner xbmc/addon/http://inputstream.mpd/decrypter/ legen (Ordner muss angelegt werden)

    Für die nicht Entwickler:
    - nightly build kodi installieren
    - hoffen, dass irgendjemand hier die kompilierte decrypter dll zur Verfügung stellt.
    - wi..vi..http://cdm.dll/so finden, Dateien in den o.g. Ordner legen und fertig.

    Danach ist alles startbereit,und das plugin.amazon.prime plugin, welches ebenfalls in meinem repo liegt, sollte funktionieren

    Ein Satz zum Rechtlichen: Lizenzschlüssel für das Decrypten mit der hier vorgestellten Entwicklung gibt es nur, wenn man korrekt auf amazon eingeloggt ist!
    Amazon weiss also nach wie vor, was ihr schaut und was nicht. Für User ohne Prime account also ziemlich nutzlos.

    Ich schaue jetzt schon seit ein paar Tagen wieder prime, in deutsch, englisch, 5.1 und top qualität. Herrlich.
    Die dash entwickler haben den Audio Streamchange perfekt hinbekommen und auch vor- rückspulen funktioniert jetzt.

  • Ich schaue jetzt schon seit ein paar Tagen wieder prime, in deutsch, englisch, 5.1 und top qualität. Herrlich.Die dash entwickler haben den Audio Streamchange perfekt hinbekommen und auch vor- rückspulen funktioniert jetzt.

    Das freut mich sehr zu lesen! Ein paar mehr Infos für Nicht-entwickler könnten allerdings sehr hilfreich sein. Hast du rechtliche Bedenken oder warum gibts nur so spärliche Hinweise?
    Gibts von deinem repo eine .zip, die man im Kodi laden kann?
    Nichts desto trotz herzlichen Dank für deinen Einsatz, es scheint ja wirklich zu funktionieren.

  • Das freut mich sehr zu lesen! Ein paar mehr Infos für Nicht-entwickler könnten allerdings sehr hilfreich sein. Hast du rechtliche Bedenken oder warum gibts nur so spärliche Hinweise?Gibts von deinem repo eine .zip, die man im Kodi laden kann?
    Nichts desto trotz herzlichen Dank für deinen Einsatz, es scheint ja wirklich zu funktionieren.

    Ich bin immer so kurz und knapp, das hat keine rechtlichen Gründe :)

    Stand genau jetzt ist es für Nicht - Entwickler erstmal nicht möglich einzusteigen.
    Es muss eine bibliothek kompiliert werden, die das decrypten vornimmt.

    Ich gehe davon aus, dass an dieser Stelle über kurz oder lang etwas angeboten wird.
    (SourceCode liegt ja in meinem git repo http://github.com/liberty-developer/inputstream.mpd)

    Wenn dann hier etwas Fahrt reinkommen sollte, schalte ich mich selbstverständlich ein um Probleme auszumerzen.
    Dann wird recht schnell klar wie es geht - es ist recht einfach.

Jetzt mitmachen!

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