There has been a lot of confusion on how Retrospect update work. So this KB article is an attempt to explain the main ideas and principles behind the system. And...
Currenlty there is a bug present in Kodi 15.x and 16.x, or better FFMPEG, that results in FFMPEG to not use the proxy specified for playback. So most of the proxy functionality in Retrospect won't work correctly.
Within Retrospect each channel can be configured with a proxy. This article is here to give a short overview of how to do that, but also to explain how it works and why it does not always work.
Let me first state that proxy support was not implemented for evading DRM and broadcast laws. Although many of you will use it for this purpose, it was originally added to support a development proxy that I use myself (Fiddler2) and to help out some users that have a proxy set up to get on to the internet.
How to configure a proxy
Proxies are configured via proxy groups. Each group has a label describing it’s purpose, a proxy server, proxy port and optional username and password. The type of the proxy is always HTTP and no SOCKS proxies are supported! After configuring one or more proxy groups, each channel can be assigned one proxy group by:
- Setting a proxy group via the add-on settings, or
- Selecting a proxy group via the channel listing
These two options are illustrated in this short tutorial video:
Limitations to proxies and Kodi
What will happen if you select a proxy for a channel? All urls requests from the Retrospect Add-on will be done via the configured proxy. However, as soon as Kodi starts playing a stream, Retrospect is unloaded and any requests made by Kodi will no longer use the proxy. To solve this issue, I added a patch to pass a proxy on to Kodi for a specific stream. This patch can be found in this pull request. It is scheduled to be in the Kodi 13.0 Alpha 11 (December). So until that time, not all streams will work. Even if a proxy was selected.
‘I use a proxy for DRM reasons but the streams still won’t play‘ explained
This could very well be. Let me try to explain what mechanisms there are to prevent you from playing a stream outside a specific country. Most of the methods are based on probing you location based on an IP address. There are a number of different methods to do this:
- The URL that provides you with the actual streams (often RTMP streams) is only accessible from a specific country. Assuming you configured a working and correctly located (in that country) proxy, Retrospect will use this proxy and retrieve the streams. These streams are usually only valid a short period of time and are not IP restricted. So Kodi can play them without a proxy and thus without using a proxy. Examples of this are the British BBC and the Swedish SVT Play streams.
- We are dealing with HTTP streams that are only accessible from a specific country. Retrospect will use a proxy to access the playlist urls for the streams and then passes the stream on to Kodi. Kodi will need to use the same proxy to play the streams. At this moment this cannot be done. Hopefully this pull request will be accepted soon and then Retrospect will pass the correct proxy to Kodi and it should play correctly. Examples of this are the Dutch NOS channels.
- We are dealing with non-HTTP streams (e.g. RTMP) that are only accessible from a specific country. These types of protection cannot be solved using a HTTP proxy and thus will not work using Kodi.
To find out why a streams is not playing, please check the Retrospect(plugin).log file (Retrospect should be configured to do DEBUG logging). It will tell you if the proxy is configured and working and what url was passed on to Kodi.