Since my last post on the topic, my client and server software have changed. In the interest of full disclosure, I should mention that I now work part time for Plex, though all of my decisions outlined in this post were made before that time.
Necessity for the change
I started to get frustrated with some of the limitations of the GoogleTV:
- The platform seemed to become stagnate (and the pending AndroidTV hadn’t been announced yet). It became clear that some of the limitations were never going to be resolved.
- The device is supposed to passthrough DTS, but it will occasionally fail for a second during playback. It does this both on optical and HDMI. I tended to resolved this by transcoding the DTS to AC3 with the more problematic movies.
- The device is supposed to play VC-1, but it would stutter during playback if the content was in an MKV file. It did not if the content was in a MPEG-TS. This problem does not exist during disk playback. I resorted to transcoding VC-1 content to AVC.
- The device is supposed to passthrough HD-audio such as DTS-HD and TrueHD. It does this with playback of a disk, but not from MKV files nor MPEG-TS.
Clearly the best solution is a computer since it has no problem with all of these.
I started examining the possibility of porting my client over to a computer. I used this as an opportunity to learn some JavaFX as a possibility for the UI. I also ran across VLCKit as an nice little project for integrating playback in applications. Then I realized that someone had likely solved this problem before.
I ran across XBMC and Plex. It became clear that my best option was one of the two. It seemed the primary difference between the two is that XBMC is primarily designed for local playback while Plex is primarily designed for client-server playback. In addition, Plex supported the GoogleTV and Roku I already owned as clients. Furthermore, if the media file is outside the capabilities of the client, the Plex’s server will transcode and stream the result to the client. So, I elected to try out Plex.
When I made the change, my dad did as well. He noticed that some of his DVDs that went through handbrake had severe artifacts during playback. I discovered it was an issue with transcoder, which uses FFmpeg as its base. I submitted a patch to FFmpeg and asked Plex to merge the change. Afterwards they contacted me about working part time, to which I agreed.
After the data import, I was up and running pretty quickly. Since I have access to the source in most cases, I can fix any minor issues I run across. Overall, it is much more advanced than what I was doing before. I since upgraded my sound system and TV.
All that remained was a better client, which I’ll describe next time.