Linux-VDR Channel -> first alpha for testing



Hi all,



I really fell in love with Plex over the Christmas with all the time I had to play around with it. See, in my setup my beloved VDR (, is the heart of our TV/Movie Stuff and yes - there are streaming solutions for my bunch of iOS devices, but these are only focusing on the VDR Part.


What I like about PLEX is, that it really is a hub to manage all kinds of stuff.


So, the VDR Scanner stuff allows to add my recordings to the Medialist in PLEX, means I could stream a recording to my iPad while lying in Bed or being on the road - great. Now I started to look into how I could get a channel created that allows to stream live TV.


And, based on the Dreambox Plugin and the chatter in the "play .ts file" thread here I created this:


You *must* have a VDR instance running with the streamdev-server-plugin (as of 0.6.1, I am using a git version from 20131129 via yaVDR ppas) and also allow streaming.


Please - if you are a VDR user give this a try. I know that it is far from "good" yet, but it does deliver a stream to my iOS devices and PHT.


Feedback/Improvements/Additions are more than welcome!






cloned it to ~plex/Application Support/Plex Media Server/Plug-ins, restartet PMS and first, pms crashed. Stopped and started it again, now, pms is working as before, but i cannot see any reference to vdr.

Where should it appear? in Library or Channels?

renamed the folder to ....bundle and restarted PMS again, voila, now there is a vdr under channels.

sadly, settings does not work. I tried to enter my vdr-serveraddress manually in the json, but still the plugin only shows "channel not available" ...

2014-01-03 18:23:01,403 (7fec60ff9700) :  DEBUG (runtime:717) - Handling request GET /video/vdr
2014-01-03 18:23:01,405 (7fec60ff9700) :  DEBUG (runtime:814) - Found route matching /video/vdr
2014-01-03 18:23:01,406 (7fec60ff9700) :  DEBUG (networking:172) - Requesting ''
2014-01-03 18:23:01,417 (7fec60ff9700) :  ERROR (networking:219) - Error opening URL ''
2014-01-03 18:23:01,418 (7fec60ff9700) :  INFO (__init__:31) - VDR Plugin: Couldn't connect to VDR.
2014-01-03 18:23:01,418 (7fec60ff9700) :  DEBUG (runtime:106) - Sending packed state data (104 bytes)
2014-01-03 18:23:01,418 (7fec60ff9700) :  DEBUG (runtime:915) - Response: [404] NoneType, 0 bytes

maybe, its the thing with this rss stuff?

I'm running yavdr, and streamdev is enabled (tried and got "Das Erste HD")

btw, i'm running vdr-plugin-streamdev-server 0.6.0.git20121


Did you check


it must allow access from the Plex IP or subnet

​You should be able to call the URL from the plex machine, try with lynx if you can open it from the shell.


all ist setup correctly:

content of streamdevhosts.conf             # always accept localhost     # any host on the local net

i did a 


from the vdr-server itself:

--2014-01-03 21:07:35--
Verbindungsaufbau zu verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 400 Bad Request
2014-01-03 21:07:35 FEHLER 400: Bad Request.

Serverlog from vdr says:

Jan  3 21:10:10 vdr-dach vdr: [1062] Streamdev: Accepted new client (HTTP)
Jan  3 21:10:10 vdr-dach vdr: [1062] streamdev-server: closing HTTP connection to

where does the rss-stuff come from ?

edit: i just saw here, that the rss-stuff is only available in streamdev 0.6.1 ..

are you running vdr as yavdr-distri? where did the streamdev 0.6.1 come from?


Could you add 'curl' to your server and  see what

'curl' does return ?

If this does not return the XLM RSS structure of the streamdevserver-plugin, I dunno ... Then I will set up a virtual machine to simulate the fact, that your plex is not localhost to vdr.




Could you add 'curl' to your server and  see what

'curl' does return ?

If this does not return the XLM RSS structure of the streamdevserver-plugin, I dunno ... Then I will set up a virtual machine to simulate the fact, that your plex is not localhost to vdr.



from the vdr itself:

curl -v
* About to connect() to port 3000 (#0)
*   Trying connected
> GET /groups.rss HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/ libidn/1.23 librtmp/2.3
> Host:
> Accept: */*
* HTTP 1.0, assume close after body
< HTTP/1.0 400 Bad Request
* Closing connection #0

same for

btw - i edited my post above - did you notice?


argh, I did not notice :-)

I am using yavdr 0.5, pretty new. Did you update? also a dist-upgrade ? Maybe this is the reason why... 


apt-get update

apt-get -s dist-upgrade 

and see how much it will touch.

mine's like this:

ii  vdr-plugin-streamdev-server                0.6.1.git20131129-0yavdr0~precise           VDR Plugin to stream Live-TV to other VDR's - server part


runs like a charm.

now watching livetv via plex on my SGS2 :-)

only thing that does not work properly: acessing the live-tv channels via dlna from my smarttv (Panasonic). It stutters and does not play smooth.

I know, its senseless watching tv on a tv via dlna and streamdev from a remove-VDR and not via dvb-s2, i just wanted to test :-)

next step is dynamic epc-info via svdrp ?  :D

ps: dist-upgrade was the missing step.


So, this is good to read! 

Next step is probably to kick out streamdev for everything but the stream and then use restfulapi for all the rest, incl. EPG and images... I'll try over the weekend if that makes sense. 

The fact it stutters on your SGS2 and that a user in the vdrportal told me it does not work at all on windows RT devices makes me think that the mpeg2ts container I use is probably an issue. 

Let's see if I can find a way to set this more dynamic, like client dependent. No clue yet.

Thanks for the feedback :-) although I have no clue of that python stuff it means a lot of fun to have that ability.




you misunderstood me. on my sgs2 it plays *very* fine. It stutters on my smartTV :-)


Hi guys,

I am the guy who is having problems using the channel with Windows RT. Windows RT is not able to decode MPEG2 natively, so the stream must be transcoded.

Today, I played around quite a bit and came to the following findings:

  • Plex/Web nicely performs the transcoding from MPEG2 to H264 - however I found no way to convince the Windows RT client to do it. It just tries to remux the stream, but as the video codec is kept, it will not play. Obviously other channels (e.g. DreamBox) suffer from the same issues.
  • I tried to do the transcoding from VDR side using externremux. This only works, if externremux is modified to use ffmpeg instead of the default mencoder. I can supply my externremux file if that is interesting. So the stream plays, but unfortunately, the transcoding does only stop, when I close the Plex client on Windows RT. I played around a bit by using "IndirectResponse" inside the plugin, but that made things worse as multiple requests were started in parallel resulting in multiple ffmpeg transcoding processes. And again, transcoding never stops :-(

So it might be all an issue of the (quite new) Plex client for Windows RT ... 

However, I am open to any ideas :-)




Hi guys. Check out the latest version of the dreambox channel. It plays live streams to most things these days. it's on my github . Have you tried setting the container manually. Ie to mp4 instead of mpegts . We've found that setting mp3 for the audio codec instead of aac helps a lot .

Sent from my HTC One using Tapatalk


Hey green,

thanks for the hint - I used the basic version as a starting point but I have not yet taken a look at your enhanced stuff. Will do so certainly!




@greeny101: I tried to set the container to mp4 and audio codec to mp3. However it does not change a thing. The 

I had a look at your dreambox channel code but I could not find a real difference on how the stream sent to the device. 

The current solution to use the VDR internal transcoding is quite ok, but you have to close the full Plex Client to really stop the stream and the transcoding :-(

Not very zap friendly and a low women-acceptance factor :-(

I get more and more convinced that the real issue with Windows RT is part of the client ...





I really like this VDR channel approach, I was almost beginning to develop it myself but during my search on how to write a plugin for Plex I stumbled across this thread.

As others already said, it runs like a charm on my Android phone, iPad and via Plex/Web but the Plex client on a Samsung Smart TV doesn't play it with the error "File not found".

But I still have some problems with my new VDR installation on an Arch box.




Hi, thanks for the feedback!

I am currently trying to use the restfulapi-plugin in order to access real XML with a better structure than streamdev, but i am struggling with XPATH  ;-) 

So, more will come soon I hope. After that works, we can look into how streaming can be optimized. Meanwhile, check out the code and play with it yourself if you like, I am happy to incorporate work by others - this is still so basic ;-)





I pushed an update to my git repo yesterday. Please play with this.

It uses vdr-plugin-restfulapi as a *MUST* and hence requires this. Only update if you have that installed and running. It should work seamlessly like before, but also show channelslogos if you configured the restfulapi parameters for your vdr accordingly.

I will base my further work on this, so EPG and more details are likely to come soon. Ater that I will look into transcoding, streamtypes, etc and how this is all handled



2014-01-09 22:30:37,436 (7f7a9d7fa700) :  DEBUG (preferences:256) - Loaded preferences from DefaultPrefs.json
2014-01-09 22:30:37,437 (7f7a9d7fa700) :  DEBUG (preferences:178) - Loaded the user preferences for com.plexapp.plugins.vdr
2014-01-09 22:30:37,439 (7f7a9d7fa700) :  CRITICAL (runtime:880) - Exception (most recent call last):
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/components/", line 840, in handle_request
    result = f(**d)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/handlers/", line 119, in call
    result = self.func(*args, **kwargs)
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/plex-vdr-live-tv-plugin.bundle/Contents/Code/", line 44, in MainMenu
    xml = LISTGROUPS_URL % (Prefs['host'], Prefs['restapi'])
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/code/", line 111, in 
    _getitem_           = lambda x, y: x.__getitem__(y),
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/", line 506, in __getitem__
    return self._sandbox.preferences.get()[name]
  File "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/code/", line 330, in __getitem__
    raise KeyError("No preference named '%s' found." % name)
KeyError: "No preference named 'restapi' found."

2014-01-09 22:30:37,441 (7f7a9d7fa700) :  DEBUG (runtime:106) - Sending packed state data (104 bytes)
2014-01-09 22:30:37,442 (7f7a9d7fa700) :  DEBUG (runtime:915) - Response: [500] 1683 bytes


do i need the vdr-plugin-restfulapi installed on the machine where plex is running?


Ah ... damn, that was missing a entry in the DefaultPrefs.json ... check the repo again or add this:

        "id": "restapi",
        "type": "text",
        "label": "Restfulapi Port",
        "default": "8002"

I am really sorry. 

The restful-api plugin is a must on the vdr machine.