Skip to content
Stefano Gottardo edited this page Jun 30, 2024 · 20 revisions

This list provides helps and where possible solutions for problems that a developer may encounter.

Problems:

Errors:

Streams language names displayed with wrong/incomplete descriptions on Kodi OSD settings

Most video services usually provide streams with language code in ISO 639-1 format, well accepted in Kodi (example es Spanish). But nowadays a new standard is being adopted the IETF BCP 47, which provides subtags (like region code) for example es-ES for Spanish-Spain, but this new format is not supported in Kodi, leading to some problems.

All Kodi versions until v19 (Matrix) are affected by the worst problem and will results in wrong display of language names, for example:

  • es-ES will be displayed on Kodi OSD settings as Spanish-Spanish
  • pt-BR will be displayed on Kodi OSD settings as Portuguese-Breton
  • and so on...

but the situation has been improved a bit from Kodi v20 (Nexus), see below.

Solutions for Kodi v19 and older

For these Kodi versions, the only workaround is to use a proxy to intercept the manifest and rename the language codes of each audio/subtitle stream, so you have to set a custom subtag to something that does not exist, for example:

  • es-ES renamed to es-Spain will be displayed as Spanish-Spain
  • pt-BR renamed to pt-Brazil will be displayed as Portuguese-Brazil
  • and so on...

as you can see the final result is that the custom subtags are kept as is, but still there will always be problems with the Kodi language selection done by Kodi when playback starts.

Solutions for Kodi v20 and newer

From this Kodi version has been improved the support for language code with subtags, then unrecognized language codes are displayed in Kodi GUI menus as is without descriptions, for example:

  • es-ES will be displayed as Spanish-es
  • pt-BR will be displayed as Portuguese-br
  • and so on...

therefore no manifest alterations are required, but if the final user want a better language descriptions and selection when playback starts, must perform one of these operations:

How to get downloaded manifests files

To save downloaded stream manifests to disk during playback, open the settings and in the Expert category enable Save stream manifests. The files will be stored in the user data folder of InputStream Adaptive. Each manifest file will be saved in sequential download order using timestamps, the filename can also be identified in the Kodi debug log to verify when it was saved. All existing manifest files will be deleted at the start of each video playback.

How to debug license data

You can debug license data by enabling Save license data from the add-on Expert settings. If enabled, the license data will be saved to disk when playback starts, these files will be stored in the "cdm" folder under Kodi data folder.

Filenames are composed as: CDM_identifier.type_of_data

Some Widewine examples:

  • EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED.challenge -> The challenge data used
  • EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED.init -> The initial (pssh) data used for the license request
  • EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED.response -> The license response

Every time a new video is played, these files will be overwritten.

How to get stacktrace log of a Kodi crash on linux

To try determinate the cause of a crash, you need to use gdb debugger to obtain the stacktrace log.

  1. Install gdb sudo apt-get install gdb
  2. Run Kodi with gdb gdb /my/executable/path/kodi.bin (example gdb /usr/lib/kodi/kodi.bin)
  3. Make Kodi crash
  4. On gdb terminal, type bt to get the stacktrace log
  5. On gdb terminal, type bt > stacktrace.txt to save the stacktrace log

Decrypt Sample returns failure!

This error may occurs when the inputstream.adaptive.license_key property is configured with wrong content, then may happen that the video plays for a few seconds before stopping with this error. We suggest you investigate the HTTP requests/responses of your video service provider, in order to understand the right license configuration.

Unable to initialize MediaDrm

This error occurs when the device used has an invalid or corrupted DRM library, could be the case when you use a custom firmware, or running the application on a virtual environment. In any case it is an external problem not related to the add-on.

HTTP error 401

This error could be raised when a video service requires an appropriate user-agent HTTP header. So make sure that you have set the user-agent string in to property: inputstream.adaptive.manifest_headers and if required also on inputstream.adaptive.stream_headers (see Integration page for details).

But the root of the problem may be also influenced by the Kodi core, which makes an early request for the URL address, thus executing an HTTP HEAD request in order to determine the mimetype. So to avoid this, make sure you have add these properties:

  • If you are using an add-on: listitem.setMimeType('application/dash+xml') and listitem.setContentLookup(False)
  • If you are using a playlist file such as STRM/M3U8: #KODIPROP:mimetype=application/dash+xml

HTTP error 403

We know two common reasons that can lead to an HTTP error 403:

Server protected by Cloudflare

You can recognise this type of protection by analysing HTTP requests/responses which should contain the word Cloudflare. This anti-bot protection does not allow us to download files, there is currently no known solution.

Verified Media Path (VMP) CDM protection

There is currently no known solution. For more info see Verified Media Path (VMP) page.

HTTP error 404

This can usually happen when for some reason the add-on tries to download the wrong stream segments. If you are trying to play a LIVE content, its possible that the manifest updating is not working, in this use case you could try set inputstream.adaptive.manifest_update_parameter property, see Integration page. Otherwise it could be an add-on bug.

HTTP error 400 - Provisioning server returned failure

Your device may have some problem with the DRM library, could happens for example when using Android custom ROM's.

License request - HTTP error 400

Possible known solutions:

  • Try to verify the headers set to the inputstream.adaptive.license_key property, may be missing or URL encoded in an incorrect way.
  • You are using an operating system other than Android, it is possible that you are using Widevine libraries that are too old, try updating them by using the InputStream Helper add-on.

License request - HTTP error 500

This error can occurs when is missing some headers in the license request. An example could be Content-Type: application/octet-stream or for missing user agent. See inputstream.adaptive.license_key property to know how set the license headers.

Clone this wiki locally