A month and a half ago I released Gallus on the Android Play Store. Gallus is similar to Instagram’s Hyperlapse solution (though that option doesn’t exist on Android): it offers gyroscope stabilized video that you can hyperlapse. Or view and render to slow-motion.
Gallus was the first such product on Android, and to my knowledge remains the only such product on Android.
(The real credit, as an aside, goes to MEMS gyroscopes. These inexpensive, extraordinarily precise devices are a very recent development, and are changing entire industries)
Some level of stabilization is particularly important for time accelerated videos (which, if the camera is moving, qualifies as a hyperlapse) given that the swaying movements that are natural looking in a video played at normal speed become noxious when sped up, particularly given that transitional frames are lost in the process (generate a 30 FPS video from a 30 FPS source at 8x speed and 87.5% of the frames are being discarded. Without the transition frames the movements become that much more abrupt).
If that video seems to have less than smooth movements (most obvious in the movements of the clouds), you’re probably using the Chrome HTML5 player on a Windows or OSX machine. This source video is silky smooth on mobile and in the Firefox browser. Something strange is going on with Chrome’s playback and it isn’t the fault of the video. I’d never noticed it before, but of course given that I had just watched the perfect source video, it was jarring. View it in Firefox to contrast.
The video is actually a demonstration of time lapse and fixed exposures rather than hyperlapse functionality — stabilization is disabled given that the camera is generally still — captured this evening over a two hour span. It was shot with a Nexus 4 and its notoriously poor camera given that it was the device I was okay leaving on a deck ledge that squirrels and other animals traverse. Seemed like a fun video that will be added to a portfolio of Gallus demonstrations.
I originally created the core of Gallus for a hiking adventure. My needs on the stabilization side were not overly ambitious — I wanted to reduce movements, but close was good enough, and close was the best that could be done across varying devices without a lot of work. And I thought it was good enough for a first release.
It wasn’t. It yielded a lot of unfavorable feedback: While I was focused purely on the 4x and 8x outputs, where close enough was very decent (at those speeds the scenery and movements are changing enough that minor transition shudders are hidden), a lot of users were searching for Steadicam-style 1x output. On the flip side, I took some design cues from Instagram’s offering — given how positively it was received — and got negative feedback on the Android side for the same.
So I worked on it. And I’m very confident in saying that the stabilization, rendering, movement spline finding and recording functionality are close to perfection. On some devices you do need to run a calibration procedure (some tablets have comically lagged sensor readings), but quickly it is generating some brilliant output.
But I laugh now looking back on that first week, proud that I’d finally gotten over my hesitations and pushed it to the market. “I expect 100,000 installs in the first week“, I boasted to my wife. All of those media outlets that talked endlessly about Instagram’s offering (the Verge ran a series of videos that were simply gushing about the revolution), and then talked endlessly about the same not coming to Android…surely it’s a bit newsworthy when a functional equivalent comes to Android, right? How about when a functionally superior option arrives?
I don’t believe it was mentioned by a single site. Not even Android specific sites (though after a Reddit user submitted Gallus to an Android sub, for which I am eternally thankful, an editor of one pretty major Android site did offer me a “promotional” opportunity. And of course like all app developers I get endless recurring offers for download and comment bots to boost the app, including those that guarantee top billing on a variety of Android sites. It is a dirty, ugly business, and I’m not going to pay for a single mention or link — I’ll just keep making the app more incredible by the day, and it will get there).
Which is, in retrospect, fairly predictable. I have limited connections in the Valley, or with the media. I am, in all ways, an outsider up here in the Toronto area. I’m not funded by a guy who knows a guy who funds the guys who run The Verge, and so on. And, to be totally honest about it, the app was imperfect (as all apps generally are. It’s extraordinarily threaded as a necessary design element to maintain performance under all conditions, so early on there were a couple of those synchronization issues that happen infrequently enough, but are deadly enough, that they really make you question your sanity), so maybe it was evaluated and deemed not good enough.
Add that major sites report on trailing trends — by the time you hear about it there, it’s probably already over the curve of popularity.
The organic discovery on the Play Store is horrific, and Gallus is down in 30th place or so for Hyperlapse, despite being the only product that actually does a hyperlapse. Of course I say organic discovery is horrible only because it doesn’t serve me — isn’t that always the case — but it is primed by the past, which means that it does take a long time to reflect changes of conditions.
I have yet to make a tutorial video (always delayed because time was limited, not to mention that the vexing issue of perfect stabilization was absolutely eating away at my being. The interface was also seeing significant changes, making such a tutorial an exercise in chasing the past). I never made an upbeat-music accentuated demo video. The Play listing has terrible screenshots, and an overly verbose description — one of those “if there were two of me” kinds of things.
It has done nothing to sell itself. I’m actually surprised and delighted that several thousand people have installed it, and kept it installed.
Instagram’s Hyperlapse is a great product. I’m making something better, on a platform that wasn’t served and where it was claimed to be impossible.
As an aside, given that there is always confusion about this-
-Gallus is not a horizon leveling application. If you started recording and then shake your camera all over the place, it isn’t going to undo that. Instead it tries to smooth to the intentions of your video (not least because it minimizes the corrections necessary, which thus minimizes the cropping necessary), so if you hold your phone fluctuating around an angle for a period of time, it will smooth to that angle. If you pan at a certain speed, it will normalize to a fixed pan. All corrections have to fall within the maximum degrees offset boundary, which exists to avoid having to crop too much of the video (though of course you can increase that setting if you want, understanding that it means that it will more aggressively fight short-duration movement, necessitating more cropping if you’re using the smart zoom functionality).
-Gallus cannot possibly generate perfect results in all situations. Most devices provide gyroscope measurements approximately 200 times per second at most (every 5ms or so). That sounds like a lot, but if the device is bouncing around, dramatically, a couple of milliseconds can be the difference between downward motion and bouncing back upwards, offsetting the corrections. Under low light especially, the frame matching with sensor readings is less likely to be perfect, more likely to skew. You should always attempt to be as steady as possible. As an aside, note that the lighter the device, the smaller the kinetic motion is likely to be, so if you have a big heavy device in a big heavy case, you’ll have to take extra efforts to try to avoid those high G moments. Even for smoother source video, many Android devices have very sloppy timing, making it impossible to perfectly correlate motion with the video without scene analysis.
-Comparisons should be fair. I’ve seen people compare a frantic walking stabilization of Gallus on a low end, dodgy gyroscope handset, with a ferry ride video generated by Instagram’s application. Ferry rides, bicycles, skateboards, cars — they’re all gravy, easy stabilization tasks, and tend to have limited high-G events. Walking is actually the most difficult task of all, particularly if the user isn’t taking some care to minimize erratic movements.
-most unfortunate of all, there are some people who weirdly feel insulted that a product similar to Instagram’s Hyperlapse is available on Android. I’ve discovered this oddity in virtually every discussion that comes up, and it seems to be some sort of bizarre corporate affiliation that has them personally offended at another platform getting nice things. iOS is a fantastic platform, and Instagram’s product is brilliant for what it does, and neither are made worse by another platform having a similar, if not better, option, beyond some sort of weird brand cheerleading.
As an aside, I’ve yet to test this on a Galaxy S6 — if a reader happens to have one, please give a try. If the output is not satisfactory (note that the playback is purely for previewing — render to an output for the actual output, which if at 1x will include audio), please try the calibration option under settings. I’d love to hear how it goes. That looks to be a great device and I hope to test and optimize — if even necessary — Gallus on it very soon.