Rebuilding DS106TV

Rebuilding DS106TV

2 weeks ago DTLT got it's own copy of Wowza Media Server and we loaded on our media server to start experimenting more with live video streaming. Of course the setup isn't new to us, we had used Wowza for DTLT Today extensively, but that was with Amazon EC2 instances that had to be fired up on demand, which didn't make it easy for spontaneous broadcasts and advanced customization. Now that we have our own install on our own hardware we can really start to explore and push some of the possibilities. I've wanted to revamp the idea of DS106TV ever since it began because I never felt like we had the holy grail of what I envisioned it to be. This weekend I got a little further towards that goal. I bought the domain ds106.tv just a few weeks after the Spring 2011 course began. With the first assignment asking for 30 second video introductions and having so many people participate, I envisioned a space where some of that would be aggregated in a way that would make it easy to watch. I also really liked the idea of live content being broadcasted out, similar to what DS106radio was doing at the time with Papaya. To be honest the ideal setup looked a lot like Livestream's service (at the time, they've since switched their model entirely) and I even played around with that early on. With Livestream you could setup an embed that played an automated channel of pre-recorded and imported content and then if anyone went live it would interrupt the stream. Live broadcasts could also be done from mobile devices and involve multiple parties. But Livestream had some really intrusive ads (both pre-roll ads and interruptions every 15 minutes during viewing) that made it simply unusable and with a $350/month cost to remove ads there was no way I was going to be able to use the service. I settled on Justin.TV at the time for live broadcasts because even though it also had ads, they were not too intrusive (a single 15 second ad before the live stream started). They still automated the recording of live shows and had decent mobile apps to broadcast with. I setup the site at the time with those archives as posts in Wordpress but it was a lot of manual work on my part to keep it current. Still, this setup alone drove the video for the following summer, the "Summer of Oblivion" and seemed to work well enough. I kept it in that form for the next year and a half until just this past week. The idea of starting from scratch really appealed to me for a project like this. I'm so spoiled by Wordpress that I often find myself tailoring a project to fit a certain theme or set of plugins rather than the reverse. I had searched a bit for a video-heavy theme and didn't come up with anything I was really pleased with, so I decided to just wipe the slate clean and start coding from scratch. I'm really glad I did that because not only was it a good refresher in HTML/CSS/JS but with the simple setup I planned for this stage of development it ensured the site would load quickly and I'd have full control of the layout. Obviously down the road it might make sense to port to Wordpress if I find the need for using specific plugins or regular updates, but for now a static site works perfectly fine. Here's what I've accomplished in the last 24 hours:

  • The homepage has a pretty cool design featuring an old-school television in a set that looks straight out of the Overlook Hotel.
  • The player embedded in the TV is the open source version of JW Player which, on load, checks to see if anyone is live. If someone is broadcasting you will see them, if not it lets you know that no one is online.
  • There's a chat button that opens up a dedicated window for chatting during a livestream. I thought about having it embedded in the page somehow but couldn't figure out a way that would make the layout not suck and often depending on a person's screen resolution they may not be able to participate in the chat and watch the livestream at the same time, so I figured by breaking them into separate windows people can resize screens to fit their needs.
  • A ribbon at the top-righthand side of the homepage links to the broadcast area, which isn't styled much yet but features an embedded flash player that will detect your webcam/mic and, upon hitting Record, broadcast that feed to the homepage.
  • On the broadcast page I loaded the chat to the right of the flash broadcaster interface and set it up to automatically connect to the chatroom just by clicking "Join Chat" so it's dead simple for the broadcaster to keep up with the chat from this dashboard.
  • All recordings are archived by default on our media server. JW Player can play them with one line of code, but I haven't figured out a way to automate the generation of that code.

So that's where I am currently with the project. It's a basic system that allows anyone to go to the site and broadcast as well as watch the stream coming in and chat. There are actually ways to broadcast and chat using other software and even mobile devices and I'll probably put up a documentation page soon on how to do that. But I have so many more ideas for how I want to build out DS106TV. Here's a laundry list for me to keep track of where I'm going with it: - When you visit the homepage and no one is broadcasting, I want it to play previously recorded content as well as YouTube links people have submitted via some form on the site. (I'm pretty confident I can accomplish this right now manually but something more automated would be nice)

  • The ability to schedule programs to be live at certain times, so the pre-recorded content is synced up for everyone. Perhaps a Google Calendar feed or something like that.
  • When someone goes live it should interrupt the pre-recorded content with the live broadcast. This will probably require a listener object that checks the stream every X seconds and changes the JW Player embed when someone is live.
  • Put up more information on different ways to broadcast and chat. Mobile devices and desktop app support is possible with the right applications and settings.
  • Automate the DS106TV Twitter account to automatically tweet when someone goes live.
  • Build a "Campfire Chat" area where more than one person can join a stream like a Google Hangout.
  • iOS support for videos with HTML5 playback

What else would you want to see from DS106TV?