Sunday, November 09, 2008

Large file uploads: frustrations and improvement ideas

I spent a futile day yesterday trying to upload videos to Facebook. Those videos were 200-300 MB in size, some as big as 500 MB. Uploading files this big over my home internet connection (we have cable from RoadRunner) takes 2-2.5 hours. It is rare for my internet connection to stay up this long without "burping" at least once. When that happens, the upload stalls. Facebook (or YouTube, for that matter) does not have functionality to let you resume a stalled download. You have to start over. And so it becomes a Sisyphean task, because the connection hardly ever stays up uninterrupted this long.

However, I had been able to upload those videos to my web site, because I used an FTP client that allows to resume interrupted uploads at the point of interruption. I really wish Facebook and YouTube had this capability.

If that's not possible, perhaps they could consider a functionality to let users pull videos from another website, instead of from their home computer. Since my videos are already stored on my website, I would like to be able to point Facebook to my website and "slurp" up the videos from there. That way the upload would not rely on my home internet connection.

I don't know if this presents any legal problems. Obviously it would be possible to upload copyrighted videos, but people already do that from their home computers, so this shouldn't be an objection.

Implementation ideas

Hmm, I gave some thought of what would be the best way to implement this idea. One way would be for me to write a script I would run in my account on my web host. It could login into Facebook or YouTube as me and post videos directly from my web host account, where I keep them. I have no idea if Facebook has an API for this (but it has some kind of API zillions third party applications use), so that's not beyond the realm of possibility. YouTube, of course, has not opened its API for applications (that I know of), so my program would have to be a screenscraper. That's not very reliable, since the HTML formatting any website site emits can change any time without notice. Besides, such an application could only push videos from my website, not from any other third-party websites. Anyone else who would want to use this application would have to install it in their own web hosting account (assuming they have one) and customize it for themselves. That's way too much hassle.

The there is the reverse approach: not to push videos from a third-party website to Facebook / Youtube, but to make those sites pull videos from other websites. As far as I can tell, Facebook's Post or Share function can only let me post a link to a video (or any other item), not to pull that video itself into Facebook. The problem with it is that my video is in a format (e.g. MOV) that's not necessarily accessible to all viewers if they don't have the right plug-ins, and it plays only in a special application, not in the browser itself. For that it would have to be converted into Flash, which is what Facebook, YouTube, and probably all video sharing websites do with the uploaded videos.

But Facebook API may be suitable for writing an application that would pull videos from third-party websites. I haven't looked into the Facebook API at all, but seeing how millions of people have used it for all imaginable applications, this may not be out of question. Of course, this does not begin to address the problem how to make YouTube (or any other video-sharing website) do the same.

I have to wonder if no one else has ever encountered a problem like mine.

No comments: