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.