Media Server About the Project

2010/04/12 - media%20server

I, Brian Cullinan, began creating a media distribution and access web application when I first started college in 2005. I named it Media Server because that is exactly what is it meant to do; serve media.


Since the project first began, it has been completely re-written 4 times, including the current version. The first version included a lot of functionality copied from Windows Media Player 9, including themes and basic library functionality. Since then, features such as AJAX and Flexy (A smarty spinoff) have been a prominent influence in the design.

The second version of the site was the beginning of the modular design for the media server. It included "modules" such as photo, video, and music. Each module included an API for displaying a list of files, a main page, and functionality for displaying each type of media individually.

The previous version of the media site was actually an extension of my main website, a simple CMS for abstracting the design and data. The template system used is called Flexy. It is kind of a simpler version of Smarty. It abstracts the HTML out of the PHP code, but all the logic is still handled in PHP. The media side of the website was also somewhat modular. Each module was responsible for processing a request and outputting a list of files using a shared template system.

This version:

This version was started early 2008. The inspiration for this project was to create a more modular design, where plugins could be added and removed at any time, and still have a functional website. VLC contibuted greatly to the motivation to create a new Media Server site. All versions before this eventually reached their limitation in API and were abandoned.

Design inspirations came primarily from the Virtual Worlds class, taught by Abe Pralle, here at NAU. In this class I learned about Model/View/Controller, and realized that this design should be applied everywhere in Computer Science. The Model is the data model for all the information that could possibly be needed on the website. This data model is usually stored in a database and includes information, in this case, such as filenames, file sizes, or even artist and album information. The View is the way the information is displayed to the user, or in the case of the media server, the template system. Finally, the Controller is the way that users interact with the data and the view.

I decided the model/view/controller design was perfect for displaying media, and began production on my media website with that in mind.

More Credits:

Abe Pralle (, for educating all of us on the glory of model/view/controller design.

Murphy McCauley (, for all his help with I/O streams in PHP, including setting up custom stream wrappers, and all the help debugging the VLC stream.

Travis Hudson (, for his help debugging the media server on MAMP (Mac, Apache, MySQL, PHP).

Michael Brooks (), for his library for translating using Google Translate.

Joe Flieger (), for debugging and help with implementing News Groups and My Episodes.