Organized Local Streaming Development?

It is clear from reading the documentation and reviewing the discussion groups that developing a package which will allow people to stream from a local source will take a lot of doing.

Is there any desire to organize among the members of this group to develop a usable open package to stream local content? A usable package for the Roku side and the Server side that moderately technical people can use is likely more than a one man job.

A solution to stream locally stored content through the Roku has been a frequent request on the boards for a long time. Lets collectively put our desires into action and develop this.

-Shlep’

I actually don’t see it as being that hard. The biggest hurdle I’ve run into is the video format accepted by the Roku. It doesn’t appear to work with just any mp4 stream, and so far I haven’t figured out the right incantations to make it work.

Brian

Great idea!

I don’t have the technical chops to contribute confidently, but I can help with managing.

Shlepzig (and anyone else), feel free to reach out to me to discuss strategies for pulling people together and create a structure that allows multiple to contribute code and test.

Meanwhile, if you are interested in helping, please respond here with your skill set and/or interests.

Thanks!
Jeremy

“Shlepzig” wrote:
A solution to stream locally stored content through the Roku has been a frequent request on the boards for a long time. Lets collectively put our desires into action and develop this.

I agree with BCL that streaming locally isn’t that difficult at all by simple mods of the SDK example code. For those with the more recent version of the player, I’d bet the farm that the USB included on the device is for doing just this, a la WD Live and other recent media boxes.

I do think a group project would be the best way to go. Like any group project, I think each member has strengths that collectively can form a good product.

IMO, a local content solution would need some sort of editor as a standalone part to organize the videos. There are others out there such as My Movies that would be good examples. Even better would be if the XML files for Roku could read a My Movies database, you’d save yourself some time.

I agree with BCL that it isn’t super hard in itself to get a video to play. That is if you are willing to learn how to set up a web-server and deal with a bunch of individual edits. For a person that has a some web-knowledge already, or is willing to dive into the world of server structure it can be achieved with a little pain and suffering.

Mere mortals however, may feel a bit intimidated setting up a web-server to stream the files, and then adding new files to stream is also a bit of a chore. Linking to an online database that can pick up images and other information is also not really hard, but it’s a chore. Nothing is going to be completely easy to use, but it can be made fairly simple.

Building a tool that packages that all together and is straightforward to use, is a complicated project. I expect that I am not alone that I spend most of my time working for someone else and have a limited amount of time to develop a really good package. There are some pretty smart cookies on this board that can probably pull their collective cookies together and put together a nice package for the rest of the world.

-Shlep

I think more than one person around here recalls DVArchive that was built for the old Replay TV DVR system. That was a nice package that was fairly easy to use, and did a lot of the same kinds of things. OK it was the work of one guy, who made a tremendous effort over the course of years.

Seems to me that It shouldn’t be necessary to develop yet another media server for this idea to work. The ideal solution would be a channel that is a client for an existing server technology.

For instance. My SoundBridge discovers and plays audio content from any iTunes running on my network. Perhaps the most elegant solution would be a channel that is an iTunes (DAAP) client.

UPNP is another option. EyeTV DVR software uses a UPNP mechanism to allow you to play recorded content on devices other than the computer it was recorded on. And there are UPNP media servers out there that are pretty simple to install.

Just my $0.02 :slightly_smiling_face:

Local streaming is exactly what I want most from my Roku right now. Other additions I would like are streaming from specific websites, but those companies will make their own channels.

I was pleased to see the language for the Roku is very similar to Visual Basic, which is the only language I know.

I see the project as three parts:
Roku client channel
PC server
Server interface

Roku client channel can start out very simple. The example already provided would need not much extra code to stream from a local source. Get it working, then add features.

The PC server can use any freely available webser. The key component needed is a command line utility to create the array indexes the player users.

The server interface is not necessary to get the functionality, but is needed for usability. It would just be a GUI for adding metadata to the videos and running the index tool. If some of you are good enough programmers, you could make the index tool understand Mythtv metadata, run the indexer with a script in MythTv and it would all integrate.

The ideal solution would be to create a UPnP/DLNA channel. That way, anyone could use their UPnP/DLNA server of choice such as Playon, Tversity, Twonky, etc., and use the Roku DVP as a client. This would be very easy for the average (non technical) person to use.

However, after looking at the SDK, I’m not sure if this is even possible with the tools available.

Any thoughts on this by anyone with more in-depth experience with the SDK?

“nowhereman” wrote:
Perhaps the most elegant solution would be a channel that is an iTunes (DAAP) client.
That would require a DAAP client software in the DVP’s firmware. Even if Roku would want to inlcude it they probably couldn’t because to the best of my knowledge Apple no longer license DAAP to other companies.

UPNP is another option.
That would require a UPnP client software in the DVP’s firmware. Given the very limited memory of the device it is IMO unlikely that it will be possible to include it.

Greetings
dupondt

It does not look like the Roku DVP on it’s own can support UPnP.

It appears the calls from the Roku are entirely through HTTP protocol. So whatever solution is used the system must be able to receive http requests.

My personal opinion is that tying to a proprietary system like iTunes is not the way to go.

-Shlep’

Out of all of the developers here, how many are envisioning a cross-platform solution? If at all possible, please don’t lock this down to Windows. :idea:

“zwei” wrote:
Out of all of the developers here, how many are envisioning a cross-platform solution? If at all possible, please don’t lock this down to Windows. :idea:

I agree on that one as well. I am strictly a Linux guy, but understand that not everybody is as mad as that. Representing the little guy on the block aside the other Justin Longs out there is important.

We aren’t all as cool as the grand-master-hobo John Hodgman.

-Shlep’

Well I think someone with the php/sql chops needs to do is create a LAMP application in php or something, that will handle all the movie catalog/categories, and then dynamicly create XML files based on a central store for all your movie files.

Initially, you could have a php program, for instance, scan a specified directory, and create categories for all subdirectories, and then store all movie files names as the title of the movie. Store all this information in mysql (or another db of choice) and the n create a parser that will dynamicly create the XML files that corrispond to each category/ subdirectory of the main video share.

You then when ever you add content to your video share, you can re-run the file scanner, and it will update the DB (this could also be something that your just run every 12-24 hours) so you know that any new content added will be indexed within 12-24 hours.

Since all of this would be in LAMP you could easily use this on any platform - windows, linux, OSx etc …

I would create a more robust DB schema, so people could manually add information to movie titles, like actual title, description, etc… In order to keep these entries from getting overidden, you would need a key identifier for each video file, maybe a combination of creation date and file size (that should be unique enough)…

Really not much needs to be done on the roku end except a simple interface where the user can enter the IP of the video server running LAMP. Everything else would be controlled by the Apache, PHP, mysql application, obviously very dependent on the video share :slightly_smiling_face: The inital page of the application will need a setup area, and then a video area, inside the video area will be all the categories (sub-directories, in the main scan), this would then ONLY pull the movie listings for each category, this should be a quicker process, as oppesed to d/l a xml file with EVERY movie in your library.

Some things to consider - would be scanning multiple deep sub-directories, so you could organize your videos better for example:


Video Share Root:
         *TV
             |--Showtime
                     |--HD
             |--HBO
             |--Fox
         *Movies
             |--Action
             |--Adventure
             |--Sci-Fi
         *Personal
             |--Birthdays
             |--Wedding

Each category would be a different XML file, that will get dynamicly created based on the data in the sql db, from the indexing process…
Some categories would just have listing for other categories for instance from the above example, if you choose “Movies” on the Roku, you would be presented with the categories Action, Adventure, and Sci-Fi

Having all this stored in the DB would also allow you to use search. Take a look at how Amazon has their stuff setup in the Roku - it works quite well and I would use a similary approach…

I’m not familiar with the SDK, but I’d say that requiring the user to set up a local webserver on the machine where they want to read media from is a only going to reach a very limited audience.

Is there any way to just point the channel at a networked file system and load the files directly? Perhaps when they add features for the (as yet unsupported) USB on the XR, the SDK will be extended to enable such a feature more easily.

“daw3rd” wrote:
I’m not familiar with the SDK, but I’d say that requiring the user to set up a local webserver on the machine where they want to read media from is a only going to reach a very limited audience.

Is there any way to just point the channel at a networked file system and load the files directly? Perhaps when they add features for the (as yet unsupported) USB on the XR, the SDK will be extended to enable such a feature more easily.

You can only use HTTP. So your files we need to be accesible that way. Things don’t need to be complicated though. I can access files via TVersity media server. TVersity is relatively straight forward.

I know MobileTribe (current channel) is working on supporting Orb.

But using LAMP it would be very straight forward. There are single file installations of Apache, Mysql, PHP for all Operating systems, then you would have a package that installs the PHP scripts into the root of the webserver. The first time you launch the website from a browser it would have you run through a quick setup routine to setup the db schema, and point the indexer to the video share. The idea is that you would not have to be a computer genius to install it.

And if the source code is released under Apache GPL then you could package the entire project (apache, Mysql, php, and videolibrary) in a single executable (as long all source code is provided.)

I may start to work on this over the next couple weeks, it should be straight forward, obviously the hard part is setting up the indexing script, and finding a way to keep track of all your video files, but creating the XML files that the roku can parse should be simple.

“danstl” wrote:
Well I think someone with the php/sql chops needs to do is create a LAMP application in php or something, that will handle all the movie catalog/categories, and then dynamicly create XML files based on a central store for all your movie files.

There are already applications that can scan movie/TV files and pull relevant meta data for those movies/shows. One such app is Yet Another Movie Jukebox or YAMJ for short. It is designed to create HTML for another media streamer (NMT platforms), but you could parse the XML data files or create xml templates specific for the Roku. It doesn’t have a webserver built in, but it would be a pretty good backend for the scanning/categorizing or content.

I’ve successfully streamed a video encoded with Handbrake and streamed using TVersity.

I don’t really have enough skills to do much beyond what I’ve done. All I really did was get the direct link to the file and paste into the SimpleVideoPlayer example (replacing the TED example video url).

What I don’t know how to do is parse XML to get my videos to show up in a list. TVersity already creates XMLs for categories, videos, etc.

“daw3rd” wrote:
I’m not familiar with the SDK, but I’d say that requiring the user to set up a local webserver on the machine where they want to read media from is a only going to reach a very limited audience.

Is there any way to just point the channel at a networked file system and load the files directly? Perhaps when they add features for the (as yet unsupported) USB on the XR, the SDK will be extended to enable such a feature more easily.

No. The player needs a bunch of information about the content before it can play it, and to play the files themselves it needs a http server that can handle the Byte-Range request header. So you can’t do anything without a local webserver of some kind.

I also don’t think that most people’s video collections will play properly on the Roku – it appears to be very finicky about the format used (ie. my problems with it rebuffering every 2 minutes after playing fine for an hour).

The MythTV project might be a good direction to look for a stable server. Writing a Roku plugin for it shouldn’t be a huge amount of effort and it has a large support community.