Build your own Twitch using MPEG-DASH and HLS live streaming
bitcodin.com
bitcodin.com
I'm experimenting with an Apple TV project and I'd like to know (a) what has to take place to get from video camera or iOS device to an HLS stream? (b) What open source tools (if any) are available to help do this? (c) what storage/server requirements are there?
TIA
Its pretty straightforward, just a bit of a schlep time wise depending on the scale and capabilities you're targeting.
* What's the oddest problem you have had to solve while building/operating this?
* Politics within the organization
* Interfacing with legacy broadcast/video library systems (f* you Grass Valley, and your abomination of a video asset management system)
Serving video online is fairly straightforward, although it wasn't always. We've come a long way from RTMP and progressive HTTP downloads. With HLS, MPEG-DASH, etc, you're still moving the same bits, but you have a much better end user experience.
Netflix has original renditions for all of its content in S3, which they convert into multiple renditions based on bitrate and other video metadata, and their player then intelligently switches based on available bandwidth. Its (mostly) that easy, unless you're the White House or SpaceX streaming to millions of people at once. That's still a bit tricky, and you usually call Akamai, Limelight, or Encoding.com to solve that.
If I had to do it all over again, I'd create a small startup team (no more than 10-15 people) to create a platform that lets you white label so anyone could build their own Netflix with their own content (or licensed content) and iterate ruthlessly. Don't partner on storage or CDN, just create modules that let you plug n play based on the rates you can get (API libraries all the way down). Setup a partnership department to hook customers up with hardware vendors (Apple TV, Chromecast, Roku, those folks). Keep in the front of your mind that tech is commodity but relationships are what's going to put you in tens of millions of homes.
I left because no one realized how quickly other parties in the space (Hulu, Netflix, Amazon, Google, etc) were innovating. We'd spend months in the weeds, with little momentum on key features. In 5-10 years, broadcast is completely dead, its airspace auctioned off to cellular providers. This does not get through to traditional broadcast folks.
Interesting fact on your approach: at bitmovin we do exactly that, we've our bitcodin.com encoding service and our bitdash players (www.dash-player.com), which can plug into any cloud storage, CDN, wtc., we've quite a lot interfaces and tutorials for that. We see us as kind of Stripe for video.
Thanks for the information. Much appreciated.
I'm working on a better one and hopefully I can convince my client to push it to up stream.
You'll either want to push your HLS segments to S3 or a CDN if you want to persist them, or serve them directly off Nginx, depending on your audience size.
I believe support for HTML5 media extensions was added to Firefox 42, and has been around in other browsers for a while.
I've tried a few things, right now I have my dedicated home server acting as a RTMP relay for my webcam to stream into my 2nd PC where my girlfriend is playing games / streaming, but the latency is unbearable and my video is 5-10s behind what I'm saying.
Was hoping this could be a solution, but it doesn't look like it. I don't like the pricing model, and the video player STILL requires flash.
"No supported technology was detected, i.e. neither Flash nor the MediaSource Extension was found and no HLS manifest was given or HLS is also not supported. Please download the Flash Player from http://get.adobe.com/flashplayer/ or try another browser."
In the end, I found out that using a VM for transcoding is not a great idea. Having a > 3 minute lag time between input and output was... difficult to work with.
I'm not willing to pay for Amazon's transcoding service because of uh, student wages, so I scrapped that project.
Fun weekend project at the very least.