1/19/2016

EyeTV3 n Plex, Using VLC as a DLNA client

HDHomeRun Extend is a dual Over The Air network tuner with built in H.264 transcoding. EyeTV3 is a mature Electronic Program Guide (EPG) downloader and scheduling application for choosing and tracking programs and seasons of shows for recording.

Plex is a flexible media server which automatically downloads program details and artwork, serving it up through a web appplication or DLNA service for viewing. VideoLAN Client (VLC) is a multiformat multimedia viewing application.

EyeTV3 manages the tuner and begins a schedule by waking up any sleeping devices, and records the scheduled programs. A post program script moves the tuner transcoded H.264 file to the Plex media archive where it is automatically cataloged and indexed and made available.

The Plex web application provides a choice of Flash or HTML5 browser client for viewing programs.

Plex also provides a DLNA streaming service to access the recorded program using a DLNA client.

VideoLAN client is a more fully functional alternative to a web based client. Until recently the VLC client was not a good DLNA client, as of version 3.0.0 (and 12/3/15)(currently only available in nightly builds) however it has become a fast and stable DLNA client. Previous versions 2.2 and lower had a consistent habit of taking minutes to complete a recursive audit of the DLNA source, and abruptly crashing. The behavior has greatly improved.


DLNA is a protocol for discovery and streaming that relies upon http protocol to communicate SOAP requests to determine the clients capabilities, and then serves the stream or transcodes it "on the fly" to service the client request. It relies upon an xml file formated Client Profile, which the DLNA server chooses to use based upon the Clients self indentifying information in the Clients http request.

These Client Profiles are unique to the Client application or Network device and must be written custom to make sure the DLNA server properly provides service to the DLNA Client.

They have a specific format, well described here:

Writing profiles for DLNA devices...

The Plex server application on OSX has an Applications/{base install directory}/Resource/Profiles directory which is a cache of Profiles for commonly recognized  clients and one 'Generic' profile which makes no attempt to transcode and is reserved for use with unidentified clients.

One of the Plex server "Flagship" features however is that it does make an attempt to specifically "identify" the client requesting service in order to determine the appropriate "real-time" transcode it should perform on a stream for that client. While using the client in "non-transcoding" form is possible, it was not a specific design goal of the Plex media server project, but rather as a final resignation step to provide service to a client.  {Sometimes} it is "preferred" to moderate, or selectively "choose" not to transcode, or rather to adjust the transcoding so that the hardware the Plex media server is running on is not over powered or its resources over subscribed. In those cases modifying the client profiles (in the user account directory for the Plex server application) would be the appropriate choice. Creating and modifying "client profile - overrides" is preferred and more appropriate, since the Plex server update process also retrieves "revised" base client profiles from the project upstream sources, which could in-advertently "overwrite" any user specific modifications.

Plex server Profiles are brought along with the install of the Plex server program and updated periodically. Personal Plex server Profiles are added to the personal home Plex server application data directories (specific to the user account that runs the Plex server) and sourced (i.e. included when the Plex server starts up and searches its application data directory for account specific application data files) during the start of the service to amend (revise, alter, change, modify, qualify, adapt, adjust)or collaborate or (even) override and supercede those of the inital base Plex server application install.

One of the key things to take note of is at this time the VLC nightly builds come as .7z, .zip, .exe, .msi installation bundles. Neither the .exe or .msi will install a functional version of the nightly builds as of 1/18/16. However a manual install using the .zip file results in a fully functional VLC client program.

Another advantage of the DLNA service is many of the 10 ft user interface devices like Home Televisions, Mobile phones and personal tablets are all DLNA compatible and can also discover and source content. Plex also has the ability to automatically transcode the content for the client devices as needed rather than permenantly degrading or duplicating content from its original storage format.

A convergence of services is also occuring in this space as AppleTV, Roku, Amazon, Netflix and other media sources and devices already support Channels on their native interfaces and are beginning to offer add-on clients that will similarly source DLNA content.. such as the VLC interface on AppleTV. A Channel is merely a streaming source that makes its output available through a DLNA enabled media server. This can include Live Cable or Over the Air broadcasts, or Personal and Business conferencing applications currently replacing traditional personal communications such as Skype, Facetime and Hangouts. Gaming sources like Twich can also provide a Channel as can real time in persona or via avatar persona games.

Scheduling remains a logistical tangle of cooperative management of limited resources made easier by multiple on demand sources. But it has not been replaced, it has merely been transformed into an artform entrusted to individuals and mobile assistants that can interpolate and make the best decisions among many less desirable outcomes.