For the last little or should I say, long while I have been working on wrangling a solution for live streaming from Android that is both decent quality and extensible. For those of you interested, the litter in my GitHub account documents various previous attempts.
As far as I can tell, most folks that are streaming live video from Android are relying upon the video captured by the MediaRecorder and underlying classes and doing a bit of trickery with the file either while it sent to the server or on the server for distribution. This is fine but it doesn’t give hooks into the actual video frames before they are encoded and sent over the network.
Recently, I came across Samuel Audet’s amazing open source JavaCV project. In that project Samuel is wrapping FFMPEG’s underlying libraries (avcodec, avformat, and so on) using his equally amazing JavaCPP project to expose their functionality to any Java application.
Finally, after a few weeks of experimentation and little (actually a LOT) of help from Samuel himself, I have something working!
In the post, I describe the proceedings from a breakout group at that year’s Beyond Broadcast conference. My conclusion was that online video needs to be more than just video online, that it needs to be parseable (indexed and hyper-linkable and so on).
Unfortunately, for the most part, online video now, is pretty much the same as it was then. Typically it exists on a web server as a file, is embedded in a web page with a bit of textual information around it and that’s it. Not a lot of interactivity or time based meta-data as part of it. Certainly not parseable in the way described in the post. No easy way to link to specific content or to associate content on the page with any particular point in time in the video.
Wirecast is truly a studio in a box. It has a great support for multiple cameras, mixing live and recorded sources, graphic overlays and so on. Recent versions even allow you to bring in live feeds from IP cameras including support for specific Axis cameras.
Since I am a big fan of IP cameras and Axis in particular this is great news. Unfortunately Wirecast doesn’t have direct support for most models and I had to dig quite a bit to get things to work using their “Generic” IP camera support.
First test was to get a straight H.264 encoded into Wowza and then out to Wirecast. To do this, I used the Flash Media Live Encoder and set it publish to “rtmp://localhost:1935/img” (I have Wowza running on my local machine and an application called “img” which is a copy of Wowza’s “live” application). I set the Stream name in FMLE to “media.sav” which is what Wirecast is looking for by default.
In Wirecast’s Source Settings, I added a new IP Camera and set it’s IP address to: “127.0.0.1:1935” and choose “Generic” as the type.
Viola! It works, the video is being captured and encoded by FMLE, sent to Wowza and pulled into Wirecast as a Generic IP camera. In this manner, I can have live cameras via FMLE from anywhere in the world brought live into my final stream.
Almost a month ago, I was the lucky person who got to write The Listserve message of the day.
In my message I talked about email and I asked people to respond in the hopes that I could engage people in the medium. Well, I am writing now to say it worked, sort of.
First of all, I got more than 2000 messages in response! A number so large that I haven’t actually been able to deal with them in a meaningful way. Many of them were simply replies but many of them were much more that I feel compelled to follow up with. (I think this may represent one of the problems with email ;-))
Part of my problem is that the reply address assigned to the message by the good folks the run The Listerve (shawn.van.every at thelistserve.com) was not not the same as the address I asked people to email (thelisterve at walking-productions.com), instead it had an autoreply. A week or so later they changed it so that the messages to that address were forwarded to me. They also forwarded me all of the messages that they had to that address as well. It now appears as though I have a bunch of duplicate messages.
This is the type of hiccup I really should have expected but I didn’t really think it through. I suppose if I had, I wouldn’t have done what I did and I would have missed out on the fun (and I am serious, reading these messages has been fun). When I get a chance, I hope to pare the number of messages down to unique senders and do another tally.
In any case, if you are someone who sent me a message, I am sorry for the delay and I am still working on the stats but for now I can say that roughly 2,000+ folks out of the 20,000+ on the list replied. A solid 10%!
I will do my best to send a response with the stats.