Uploading a 10 GB video file on the internet is a bit like pushing a car though a mailbox. “That’s impossible,” you say. And you’re right, of course. The way to get around the problem is to chop up the car into little pieces and push them through the mailbox one piece at a time. Then, when all the pieces are on the other side, you put the car back together.
Good luck with that.
The Cinevee process for handling many-gigabyte file uploads is similar. We decided that we did not want to use Flash for uploading files, for a number of reasons, so that left us using the fairly new HTML5 File API to move files. We also needed an upload process that would not easily break, and would be resumable if the network connection failed half-way through. This means our upload interface is currently limited to modern browsers – but the benefits should outweigh the drawbacks.
Part of our solution is a customized version of the open-source resumable.js. This takes advantage of the new HTML5 File API to slice the incoming file into smaller parts. Then, each part is uploaded to our server, and we send it on to our cloud storage. If there is a network problem, the power goes out, zombie attack, etc, the customer can resume their upload without losing more than 15 seconds of work. When we have all the parts, the file is assembled by our storage provider and we send it on to the next step – video encoding.
“That’s slightly impressive,” you say. “But how does it help the filmmaker?” Good question. We can nerd-out about our problems and their solutions, but if it doesn’t help the customer at the end of the day, we’re just wasting time. The CV upload process means one thing: a customer drags a file into the Cinevee interface, and regardless of how large it is, or how many interruptions there are, it just works. We shove that car through the mailbox, one piece at a time, connect all the pieces on the other side, and what the filmmaker sees is simply “Upload Complete.”
Are you interested in adding your film to Cinevee? Cruise on over to the filmmakers page. We’d be happy to have you on board!