Plex Client for Win32 ALPHA .02

Very alpha client for plex
Like many of you, I have some old windows machines lying around and I would REALLY like to get at my Plex/Nine content with them hooked to other TVs.

In that spirit, I've started a Plex client for win32 (Attached.)

****** READ THIS ******
1) You MUST have VLC player installed (http://www,videolan.org)
[s]2) You MUST have google chrome installed (you can also have IE or Firefox along side it, but chrome is required)
[/s] - nope... That's fixed!
[s]3) You MUST edit the included .config file with the name of your Plex/Nine server
[/s] - nope... Now supports finding local Plex servers via Bonjour...
4) You MUST have .NET 3.5 or higher runtime installed.

******* Operating **************

1) F11 to toggle fullscreen
2) arrows to move around
3) Enter to select
4) alt-f4 to exit video playback (it's running in an external app - VLC)

******* Bugs ************

HA! It would a way shorter list of things that DO work! The big one is that any menu item that would require you to enter data won't work yet. Also, I'm not talking to the PMS server for transcoding because Elan won't tell me how yet! *grin*

You can email me directly at dave@rensin.com.

[s]I'm thinking of open sourcing this to get some extra hands on it, too... Feedback is very welcome. (heaven help me...)[/s]

you can now get the latest builds and code at http://code.google.com/p/plex-win32-client/downloads/list

-dave :-)


Looks like a great start! You shouldn't need access to the transcoder, as this is primary intended to serve up HTTP Live Streaming segments. In your case, I would think you would want to use something [like this](http://www.codeproject.com/KB/directx/directshowmediaplayer.aspx) to play directly in the app (using FFDShow)? It could be a totally bogus link, I'm not that familiar with the Windows platform, been a while since I've done development on it.


ahh.... but I do!

1) As you can see I'm trying to also support whichever installed video plugins people have so they have access from the PC, too. That means needing to get access to the webkit transcoder for things like netflix or hulu

2) I expect many people (including me) will load this on their laptops and want to use it when they travel. Since some of the media files can be quite large, having access to a transcoder on the same network as the file will really reduce the bandwidth needed to play those files while mobile. (a la your iOS app...)

-dave


Makes sense to me! If you think you can manage to play HTTP Live Streaming content in your app, drop me an email and we'll get you set up with a key.

Would it not make more sense to get XBMC, this is after all what Plex is based on and makes little sense to recreate the wheel. All that would be required is a plugin to access the PMS, I’m sure the developers would be happy to provide pointers. As for using plex on the move, it would burn the battery fairly fast, might I suggest something like orb. Kinda disappointed you need the .net frameworks to use the app but then that’s the price of developing it within visual studio :stuck_out_tongue:

Don’t let this put you off if you’re determined to make it work, just don’t want to see you spend an age creating something that’s already been done.

The library is now completely different. Would a plugin allow for all of your movies to show up in your libraries or have automatically added auto shares put on your home menu? I say keep up the good work!



1) XMBC no longer has all the features of Plex
2) I want my client to talk to my PMS - I don't want to have to host a new database at every tv.
3) Orb is wonderful (I run it) and is great when I'm travelling, but it doesn't have posters, cast, etc...

In any event, newest version is attached. Unlike the existing iOS Plex clients, this Win32 one will give you access to the plugins you have installed on other machines.

Same requirements apply. Also, don't forget to edit the .config BEFORE you run the app!

-dave :-)

The win32 plex/nine client now has a permanent home at http://code.google.com/p/plex-win32-client



full source access as well as pre-built binaries.



-dave :slight_smile:

I am presuming the requirement for Google Chrome is so you can access the Webkit libraries. However as Safari for Windows obviously also uses Webkit would it be possible for you to use Safari if it is installed instead of Chrome?



actually, no... I was having a bug when trying to launch IE in kisok mode (for Netflix and Hulu support) and Chrome didn't have the same issue. I've since fixed it and now chrome is no longer needed.

new version at http://code.google.com/p/plex-win32-client/downloads/list

-dave

ALPHA .09 now released at http://code.google.com/p/plex-win32-client/downloads/list


  • Automatic discovery of Plex Servers via Bonjour. You no longer have to touch the .config file at all…
  • Serious UI re-work in the selection lists to be more like the native Mac/iOS clients.
  • NO more need for Chrome to be installed. IE will work just fine…
  • Code and binaries now have a permanent home at http://code.google.com/p/plex-win32-client



    I’m getting pretty close to having this the way I want it, so the features will come much slower. That said, I’m enjoying working on this a lot, so if you have ideas you would like to see, please post here or PM me. (Posts are preferred so everyone can add their $.02)



    Enjoy!



    -dave :slight_smile:

Great application, I have been having problems with some file types not streaming, not sure if its the Win32 Client or plex media server



They play fine in Plex on Mac



Have included the details of the file below




      • MediaInfo Mac 0.7.33.4 file analysis report.
      • MediaInfoLib by Jerome Martinez - http://mediainfo.sourceforge.net

        Created on: 22 Sep 2010 23:41:28 GMT+01:00

        Report for file: Strictly Come Dancing s08e01.mp4



        General / Container Stream #1

        Total Video Streams for this File…1

        Total Audio Streams for this File…1

        Video Codecs Used…AVC

        Audio Codecs Used…AAC LC

        File Format…MPEG-4

        Play Time…1h 2mn

        Total File Size…1.21 GiB

        Total Stream BitRate…2 799 Kbps

        Video Stream #1

        Codec (Human Name)…AVC

        Codec (FourCC)…avc1

        Codec Profile…High@L4.1

        Frame Width…1 280 pixels

        Frame Height…720 pixels

        Frame Rate…25.000 fps

        Total Frames…93064

        Display Aspect Ratio…16:9

        Video Standard…PAL

        Scan Type…Progressive

        Color Space…YUV

        Codec Settings (Summary)…CABAC / 6 Ref Frames

        QF (like Gordian Knot)…0.117

        Codec Settings (CABAC)…Yes

        Codec Settings (Reference Frames)…6

        Video Stream Length…1h 2mn 3s 440ms

        Video Stream BitRate…2 698 Kbps

        Video Stream BitRate Mode…VBR

        Bit Depth…8 bits

        Video Stream Size…1.17 GiB (96%)

        Audio Stream #1

        Codec…AAC

        Codec (FourCC)…40

        Audio Stream Length…1h 2mn 3s 413ms

        Audio Stream BitRate…93.4 Kbps

        Audio Stream BitRate Mode…VBR

        Number of Audio Channels…2

        Audio Channel’s Positions…Front: L R

        Sampling Rate…48.0 KHz

        Audio Stream Size…41.5 MiB (3%)


I've been having the same problems with some .mp4's. I think the issue is on the PMS but I need someone from the team to confirm that for me.

Lots of things will work on the Mac because the Mac has access to the files directly, whereas I have to use HTTP live streaming in parts. I'm not complaining, but I'm not surprised either.

-dave

Some notes I made whilst going over your app, well done btw





Notes

Source Code available via SVN

Created with Microsoft Visual Studio C# (2008 I believe)

Language: C#

Files:

Form1.cs

Form1.Designer.cs

ServerSelector.cs

ServerSelector.Designer.cs

Program.cs






Fullscreen switch = F11

  • Had to search though the code to find this switch Edit: I see you’ve added this to your intro
  • Whilst in initial development, recommend the client is set to windowed mode as default





    Comments
  • It would be great if you could start adding comments to the code, you’ll find them indispensable when the project gets larger and as well as help out other developers looking to contribute :slight_smile:





    Error handling
  • There currently is none, whilst the executable will just crash on an error, running it through the IDE debugger is more problematic.
  • Recommend you create a separate function for error handling, this way you can just add one line of code and have it perform multiple operations.

    – e.g. popup message with simple error, print detailed info to debugger window, write base error info to log file, break current function and return to parent.

    – This ‘hook’ could be placed in areas known to crash the app if certain conditions aren’t met. e.g.

    — Before the application is loaded check for .net 3.5 else throw error

    — Before a video is loaded check if vlc exists

    — Before Webpluging is loaded check for chrome (as a side note, look into utilising Google Chrome Frame as opposed to opening a browser in kiosk mode)

    – I’m sure more can be added but you get the idea :stuck_out_tongue:
  • If implemented, consider adding a switch to turn this feature off (or even to modify its functionality, e.g. no popups, ignore break)





    Active debugging
  • Consider adding a frame within the UI that will display what is part of the code is currently being called and display any error info.
  • It can be something as simple as a textbox in the bottom right corner of the screen/form.

    – To support this you could have each function print a line to this textbox to say that it is being run and display and arguments to be processed

    – Integrate it with the error handler and show info like which line of the code called the error and in which file if you go down the modular route :wink:

    – In the future you could have it be shown when a key/command is pressed







    Other Notes



    You might want to preface the code with information regarding the source and where comments and questions can be directed.

    There doesn’t seem to be any level of abstraction between the design(skin) and the underlying code.

    Push for a more modular approach, will be necessary when the program starts getting larger



    I’m sure there’s more… my minds drawing a blank. In any case I hope you find this helpful





    Just seen you’ve updated the build again - Is this just a switch from chrome to webkit or pulling directly from the PMS?
  • eeek using IE, if you can, integrate something like Google Chrome Frame or atleast check for every other browser before IE (notice the dislike for this browser :P)







    BTW thanks for opening up the source, always nice to see a development in progress :slight_smile:

Doesn’t start on Win 7:



Description:

Stopped working



Problem signature:

Problem Event Name: CLR20r3

Problem Signature 01: plex.client.win32.exe

Problem Signature 02: 1.0.0.0

Problem Signature 03: 4c9a7c80

Problem Signature 04: ZeroconfService

Problem Signature 05: 0.6.0.0

Problem Signature 06: 4b82b2c6

Problem Signature 07: 86

Problem Signature 08: 1a

Problem Signature 09: System.DllNotFoundException

OS Version: 6.1.7600.2.0.0.256.1

Locale ID: 1031



Read our privacy statement online:

http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409



If the online privacy statement is not available, please read our privacy statement offline:

F:\Windows\system32\en-US\erofflps.txt




Ahh need to add that to the docs... You need to install the Bonjour printing service for Windows from the Apple download site... Sorry about that!

-dave

Great, works now, is there a way to leave fullscreen? Would be great if I could drag it to the second screen on my windows machine.

Some special characters (german: äöü e.g.) are not displayed correctly.



yup.. F11 to toggle! I look into the german. do you have a specific title that's giving you problems?

-dave

Hi,



Any posibility to use authentication? I have my PMS set up “secure”.



Regards



Dennis.

I’ve pulled the code down from SVN and would love to contribute if you’re looking for assistance. I was going to spend some time today getting familiarized with what’s in there, but once I am I’m happy to work on whatever. Currently, as pulled straight from SVN, it’s not building due to the ZeroConfService reference being broken, you may need to include that dll in SVN. Other than that, I’ll take a peek and you can PM me with anything you’re looking for help on.



Can you tell I’m really bored at work today? :stuck_out_tongue: