Cloud based Distributed Multimedia Processing

Multimedia processing is computing resources intensive, especially when it comes to videos. I will just use video conversion as an example.

People watch videos on mobile phones and most phones only play videos in specific format. Video conversion on mobile phone (e.g. converting video on android) can take a long time to finish when a video size is big, the phone is soon heat up, and the battery is drained quickly.

Can you do cloud-based video conversion? The idea is use distributed systems on the cloud to convert a user uploaded quickly and then allows users to download the converted video.

Let’s look at the conversion first. If we can divide a video into multiple chunks, convert them in parallel using distributed framework like Hadoop, and combine the converted chunks together. I guess this can be very fast regardless the video size, since we can use more nodes/computing resources to convert bigger videos.

But how about upload and download? It takes time and bandwidth. For upload, can we start converting while uploading? For download, can we combine the conversion with video streaming service? It allows users to watch the converted part while the conversion is in progress and save/combine the video at the same time. In addition, bandwidth is going to be faster and faster as time goes on.

An interesting tech problem in this idea is that how can we develop the video conversion tool as a map reduce job?