A video platform for buying and selling stuff
The goal of the project was to create a marketplace both on the web and on mobile that people can use to upload and watch videos of what people are selling. It sounds easy enough if you're Facebook, Google or Instagram where you have billions backing you up to host, serve and distribute these contents. Unfortunately, everyone's war chests aren't created equally.
Problem: The biggest challenge of video is it needs a lot of bandwidth and the issues are constantly there. Not only is serving a problem, we had to create a solution that was sensitive to both the team that wanted the service done but also how the content would affect the people's data plans if we didn't do our video compression properly. Another problem of video is in the upload. Although your iPhone or your Galaxy phone compresses these videos natively, they are still huge files in themselves. A 10-20 seconder video can almost take 5-10 minutes to upload, which is forever in mobile phone speak.
Uploading - We had to chop up the video into small pieces and upload them into our server in multiple threads. Once this was done, we had to reconstruct the video at the server and manipulate it there. It's almost like the transporter in Star Trek.
Video Manipulation - We had to do almost anything we could to make these videos compact. We tried fiddling with frame rates, video sizes, using Youtube through their API. We had all of these solutions but we felt it was missing the experience we needed because we didn't have much control on the video feed itself. In the end, we were satisfied with turning these videos into animated-gifs.
Once the uploaded videos were reconstructed on our server, we pulled out the audio track and reconstructed the video track and turned them into moving images. This allowed us to minimize our bandwidth use by 50% and put back the audio track in sync with the lighter video feed.
User Experience - Uploading a 20mb file can be a pain. So what did we do? Aside from multi-threading our upload, we had to focus on the user interface. We created small graphical sprites and created hooks which took the users' attention away from the wait time. We had to create an experience that allowed them to browse through the app and enjoy it while they were managing their uploads. The visual and usability experience was equally as challenging as doing the technical parts itself!