Entwicklerfrage zu Amazon MPD Wiedergabe mit Kodi inputstream.adaptive

  • Edit:
    Habe den Titel aufgrund neuer Erkenntnisse geändert.


    Hi zusammen,

    ich möchte DRM geschützten Amazon Content mit inputstream.adaptive wiedergeben, jedoch scheint mir irgendwie der letzte Schritt zu fehlen.
    Das ganze findet im Kontext von meinem Addon "Amazon Media" statt mit dem Ziel "Fußball Live" künftig anbieten zu können.
    Seitens Amazon erhalte ich ein mpd-File und in diesem sind mehrere Audioqualitäten als auch die "Signature" und "Key-Pair-Id" enthalten. Für die Kodi Wiedergabe steht aktuell dies bereit:

    Python
    li = xbmcgui.ListItem(path=song)
    licenseUrl= # ?!?
    li.setProperty('inputstreamaddon', 'inputstream.adaptive')
    li.setProperty('inputstream.adaptive.manifest_type', 'mpd')
    li.setProperty('inputstream.adaptive.license_type', 'com.widevine.alpha')
    li.setProperty('inputstream.adaptive.license_key', licenseUrl + '||R{SSM}|')
    li.setMimeType('application/dash+xml')

    Als "path" ist der Link zum mpd-File hinterlegt.

    Nun 'hänge' ich an der "licenseUrl" und weiß nicht so recht was ich hier anzugeben habe.
    Wäre klasse wenn ihr evtl. den ein oder anderen Tipp für mich hättet. :)

    Einmal editiert, zuletzt von spacy (19. November 2019 um 20:51)

  • Nun 'hänge' ich an der "licenseUrl" und weiß nicht so recht was ich hier anzugeben habe.

    Die URL wirst du im browser Network [definition=12,0]debug[/definition] finden, vlt. ist es ja auch die selbe (oder wird identisch zum) amazon addon von Sandmann bestimmt.
    Wenn du im Browser Network einfach mal nach "widevine" suchst, wirst du ggf. schon fündig.

  • 'widevine' konnte ich nicht finden und ich glaube, dass der Conent gar nicht DRM geschützt ist. Das mpd-File liefert bereits alle Segmente und eine Wiedergabe mit VLC ist möglich.
    D.h. ich suche eigentlich nach der richtigen Einbindung von inputstream.adaptive und des mpd-Files.

    Ich habe jetzt entsprechend der Anleitung das strm-File angelegt und in diesem den mpd-Link hinterlegt. Kodi meldet jetzt:

    Python
    ERROR: Open - error probing input format, /home/<user>/.kodi/userdata/addon_data/plugin.audio.amazonmedia/strm.strm
    ERROR: Init: Error creating demuxer
    ERROR: CAudioDecoder: Unable to Init Codec while loading file /home/<user>/.kodi/userdata/addon_data/plugin.audio.amazonmedia/strm.strm

    Das strm-File sieht ungefähr so aus:

    Python
    #KODIPROP:inputstreamaddon=inputstream.mpd
    #KODIPROP:inputstream.adaptive.manifest_type=mpd
    https://<domain>/Dash.mpd?dmid=<id>&bl=48k128k256k&e=<id>&s=true&h=<id>


    Edit:
    Habe jetzt das mpd-File lokal liegen und im Code folgendes hinterlegt:

    Python
    listitem.setProperty('inputstreamaddon', 'inputstream.adaptive')
    listitem.setProperty('inputstream.adaptive.manifest_type', 'mpd')
    listitem.setMimeType('application/dash+xml')
    listitem.setContentLookup(False)

    ...jedoch keine Änderung. Kodi mag es nicht abspielen und stürzt teilweise sogar ab...ohne Fehlermeldung.

    Einmal editiert, zuletzt von spacy (19. November 2019 um 20:50)

  • #KODIPROP:inputstreamaddon=inputstream.mpd in der strm Datei ist veraltet, muss auch inputstream.sdaptive heissen.

    1.) Ist inputstream.adaptive denn aktiviert?
    2.) Bitte komplettes [definition=9,2]kodi.[definition='1','0']log[/definition][/definition] und eine mpd Datei hier anfügen, danke!

  • Vielen Dank schon mal für Deine Unterstützung.
    Momentan arbeite ich an Fixes für mein Addon aufgrund jüngster Änderungen an den Python-Bibliotheken und Amazon-Umstellungen auf DRM geschützte Songs. Im besten Fall greifen beide Themen ineinander, jedoch möchte ich erst versuchen die andere Baustelle zu schließen. D.h. es wird noch einen Moment dauern bis ich die Files zur Verfügung stellen kann.

    Einmal editiert, zuletzt von spacy (24. November 2019 um 10:50)

  • Aufgrund der jüngsten Umstellungen seitens Amazon ist jetzt die mpd-File Wiedergabe essentiell geworden, unabhängig ob mit oder ohne DRM. Wenn du etwas finden solltest wäre das echt klasse und wenn ich dich dabei irgendwie unterstützen kann will ich das gern machen.

    inputstream.adaptive ist aktiviert. Die Übergabe an Kodi erfolgt mittels File "song.strm", der Inhalt ist folgender:

    Python
    #KODIPROP:inputstreamaddon=inputstream.adaptive
    #KODIPROP:inputstream.adaptive.manifest_type=mpd
    /home/<user>/.kodi/userdata/addon_data/plugin.audio.amazonmedia/song.mpd


    und verweist auf das lokale mpd-File (siehe Anhang, allerdings als *.txt hochgeladen), [definition=12,2]debugging[/definition] Mode wurde aktiviert und das Log-File ist ebenfalls im Anhang. Ab Zeile 666 steht etwas wie "error probing input format".
    Wenn der Player aufgrund von Abspielproblemen zum nächsten Titel springt, stürzt Kodi ohne Log-Eintrag oder andere Meldung komplett ab.

    Kodi erhält den Song via:

    Python
    li = xbmcgui.ListItem(path=song)
    xbmcplugin.setResolvedUrl(self.addonHandle, True, listitem=li)
  • @spacey Ist das mit der lokalen Datei nur zu Testzwecken?
    In der Regel steht in der .strm eine Netzwerk URL drin, lokale Dateien sind glaube ich etwas schwieriger, da muss noch ein Protokol vor file://

    Am Einfachsten für dich: leg die song Datei in deinen lokalen web-server (localhost), and gebe die URL darin an.
    Oder übergebe einfach die richtige / originale URL

    Edit: gerade mal nachgeschaut, .strm files sind für Netzwerkprotokol gedacht, also musst du wirklich Deine mpd Datei über einen Server zur Verfügung stellen.

  • Dein Edit hatte ich nicht gelesen, aber beides ausprobiert und aus diesem Grund auch die mpd URL im Post zuvor angehangen, vielleicht war meine Formulierung etwas ungenau.
    D.h. auch mit der URL oben erhalte ich die Gleiche Fehlermeldung.

  • Ne, ich habe das mit deiner mpd ausprobiert, das hat geklappt, bis auf die Tatsache, dass ich auf cloudfront nicht zugreifen durfte.
    Schick doch mal das kodi [definition='1','0']log[/definition] mit network mpd.

    P.S.: Du musst kodi neu starte / oder das directory neu scannen lassen, wenn du Änderungen an der strm Datei vorgenommen hast

  • Ich habe das gefühl, dass du hier 2 Themen mischst: strm file und addon.

    strm sehe ich hier zum Testen (ausserhalb des addons), ein Mix aus addon und strm macht ier keinen Sinn.

    Also entweder nimmst du eine .strm Datei und öffnest die dann ganz normal über Videos in kodi (Dateibasiert), oder du nutzt dein addon.
    Vom [definition='1','0']log[/definition] her würde ich sagen, dass du versuchst, eine strm datei aus dem addon zu starten, as ist aber nicht das was du glaube ich willst.

    Also, wenn wir vom addon reden: Übergebe die erforderlichen listitem properties, als Pfad die URL der mpd datei, und gut ist.
    Vergiss die strm datei, wir können gerne über strm Dateien reden, wenn du was ausserhalb deines addons testen willst.

  • Du hast Recht, ich hatte hier zwei Dinge miteinander vermischt, da war ich wohl zu sehr auf mein Addon fixiert. Entschuldigung.
    Die strm Datei habe ich außerhalb meines Addons als Video Datei als auch als Musik Datei starten können...somit bin ich jetzt dank deiner Hilfe einen Schritt weiter.
    D.h. es beschränkt sich auf den Aufruf innerhalb des Addons. Folgendes habe ich im Addon eingebaut:

    Python
    li = xbmcgui.ListItem(path=target)
    li.setProperty('inputstreamaddon', 'inputstream.adaptive')
    li.setProperty('inputstream.adaptive.manifest_type', 'mpd')
    li.setMimeType('application/dash+xml')
    li.setContentLookup(False)
    xbmcplugin.setResolvedUrl(self.addonHandle, True, listitem=li)

    Kodi startet kurz und stoppt gleich wieder alles. Vermutlich ist es nur noch eine Kleinigkeit. Hast Du evtl. noch einen Tipp für mich?
    Die letzten Einträge des logs habe ich angehangen und wenn es von Relevanz sein sollte, mein Addon ist ein Musik-Addon.


  • Der PAPlayer ist bei mir als default player hinterlegt (ich meine das ist Kodi Standard), habe jetzt mal manuell auf VideoPlayer umgeschaltet und siehe da jetzt funktioniert alles.
    D.h. der PAPlayer scheint den Stream nicht oder nur teilweise verarbeiten zu können.

  • Ich vermute, dass der PAPlayer das DVDDemuxInputstream (externe demuxer) API interface einfach nicht unterstützt
    Wenn ich Zeit habe, werde ich das mal anpassen, damit im vorliegenden Fall der PAPlayer nicht genommen wird (oder der PAPlayer inputstream unterstützt)

    Bis dahin musst du wohl Movie im listItem als stream type übergeben, damit automatisch der DVDPlayer genommen wird.

    Edit: auf jeden Fall hast du schon mal was zum weitertesten, das ist doch klasse!

  • Danke für deine Unterstützung.
    Jetzt kann ich (endlich) Amazon Live-Fußball in meinem Addon anbieten. Ich habe gerade die Wiedergabe getestet und es funktioniert prima mit dem VideoPlayer. Den stream type Movie werde ich noch austesten und wenn möglich gleich für alles quasi als "default" hinterlegt.
    Offen ist aktuell noch die DRM Geschichte, aber das ist ein anderes Thema und gehört nicht hier rein 8)

  • @peak3d könntest Du bitte dein addon dahingehend erweitern, dass das mpd file auch lokal liegen kann? Damit könnte ich einige offene Punkte lösen.
    Die mpd-Daten welche ich abspielen möchte sind nämlich in einem JSON Response versteckt und diese kann inputstream so nicht verarbeiten.
    Du findest die Struktur der response unten und unter "manifest" verbirgt sich der mpd content.
    Wäre wirklich klasse. :thumbup:

Jetzt mitmachen!

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