Must know

This is demo-purposes only project. It uses FFMPEG executable to convert given input video files to Flash Video files (FLV). With current version it is not possible to add/edit command line parameters. The program just takes the input file and converts it to flash video. Of course you can edit the VideoProcessor to adjust command-line parameters for FFMPEG, but there is no option to specify additional parameters when giving a task.

Technologies Used

The solution utilizes following features/technologies:
  • Windows Azure Cloud Service
  • Windows Azure Worker Role
  • Windows Azure Queue Storage
  • Windows Azure Blob Storage
  • Windows Azure Table storage
  • Windows Forms

Hot it works

Video processor abstraction

In order to abstract the video processing executable from the actual worker role, a sys-files Azure Blob container is created. Most recent version of video processing executable is uploaded to a blob within this container. Configuration setting with the name of most recent blob is used by the worker role to get updated version. So if we want to update the executable, we just change the configuration setting value of the deployed application. This will cause role to be recycled and new executable to be loaded.

Task creation

Windows Azure Queue and Blob container are used for creating tasks. First a source video file is uploaded to the requests blob container, then a queue message with respective blob name and task ID is inserted into the requests queue. For ease of use a strongly-typed queue is used.

Task processing

Windows Azure Worker role uses a timer to check the request queue for new messages. If a new message is read (exists) it is immediately deleted from the queue and the respective blob is being downloaded to the worker role temporary folder and then converted. Once task is finished, the result file is uploaded back to the response blob container. After that a new entry is added to the CompletedTaskEntry Azure Table with respective task id as Row Key.

Task finishing

After uploading file for conversion, the WinForms application starts a timer to check the CompletedTaskEntry table via the storage abstraction library. If required entry exists the blob is being downloaded to the client.

Last edited Feb 14, 2011 at 6:41 AM by astaykov, version 2


No comments yet.