Monday, August 1, 2016

Why we need high quality, native streaming on mobile devices

I've gotten to spend a good portion of my day figuring out how to do something I think is pretty basic. I want to stream both my screen and my camera at the same time. I want to do it while I'm walking around. I want to layer the two streams together. Since I'm on an awesome phone I'd like to swap between front and rear facing cameras. I'd like to swap between the screen being the focus of the stream and whatever camera I have chosen.

Why is this so frigin hard? It appears there is no device that can accomplish this and instead we have to cobble together a bunch of technologies to make this work. Even pick one of the requirements above and things fall apart either at the device or in the app store once you start exploring software options.

iOS Options

On iOS you can do amazing things with video and overlays using software like Live: Air Solo. Thank god for this application because I thought I was going to have no solution for quickly switching between my cameras to capture the rapid action of Pokemon GO rare chasing. But iOS has limitations that prevent on device screen capture so streaming the screen will be impossible without an external device. There are lots of external options, but once I use them I'm tethered to some sort of Mac/PC device and now we are talking a lot of weight, power, etc... for a sufficiently long streaming experience.

iOS has further limitations in that you can't stream the video camera from a background application. You can register as a VoIP app but then you can only do audio apparently. Even Facetime cuts off the video as soon as you multi-task.

Android Options

On Android you can capture the screen pretty easily, but the remaining applications are a mess. I found not a single camera capture application that had the same quality as the iOS Live: Air Solo app. Most of them failed to even start recording and would instead just crash. Most would then fail to function properly after being restarted from the crash. I finally landed on an Android application that I have almost configured to properly work for Twitch called Bitstream. It also has screen capture support, but once I get everything cranking and I'm reviewing my stream I see a lot of hiccups and glitches so something isn't working quite right. Its hard to debug these issues due to the stream delays as well.

In the end there is no single device that meets my requirements (arguably an nVidia Shield should do this with its native Twitch streaming capability). I may be able to use Bitstream and switch between sources, but I won't be able to overlay them. That is the closest to a complete solution available without going the laptop option.

Laptop Options?

What would it take to go the laptop option? I need a laptop with a really long batter life and I probably need to have an external battery pack for it as well. I found the Mikegyver series of batteries that work with the Surface Pro series of tablets. This would be nice. Once you have the laptop going you can power your phone off the laptop, you can tether the laptop to the phone, you can mirror the screen onto the laptop and you can use something like OBS to do all of the compositing. You'll probably still end up using your laptops cameras in this configuration instead of your phone.

There is another option for laptops, BlueStacks, but does this work with a mobile game like Pokemon GO and can I walk around outside? It seems to use Fake GPS and other hacks to get it working. That isn't interesting. I want to be mobile, I want to be legit and I want to play the game for real.

Using a laptop is both expensive and heavy, but they appear to be the only quality options.

Why No Native Application?

I really have to ask why though. Is this such a new phenomenon that nobody has thought about how to build hardware and software that makes this possible? Streaming your video to an ingestion server has been around for at least a couple of years now and you'd think the build in applications would allow this. Streaming video from a background app, also seems like another basic capability. Finally, streaming your screen so you can show it to and help others.

I think its time for vendors to build in an application with basic RTMP support and the ability to broadcast from the screens, cameras and microphones present on the devices. Its an amazingly useful way to share your experiences, provide help/support and otherwise express yourself with your friends. Third parties aren't doing a great job so its a huge hole in the application ecosystem and streaming is being dominated by the desktop market when all of the interesting stuff is happening outside.

There are some inroads from app makers. A lot of services are building applications for their dedicated endpoints. Periscope from Twitter is actually quite a powerful application, but it doesn't interact with other services. Meerkat and UStream also seemed interesting, but were closed. At the end of the day I want to send it to the ingestion servers of my choosing and record for a duration of my choosing. Many of the services have limitations in all of these areas.

I'm going to keep running down applications and solutions to this problem. I'm not willing to give up just yet and I think there is a solution hidden somewhere. If you have ideas leave them in the comments.

No comments:

Post a Comment