I'm not entirely sure about them, but I use S3 and EC2 with SQS so that the user can upload the file, it will be encoded while waiting in a queue, then place itself back into storage. That way nothing ever touches my production server.
It's like a giant disconnected filesystem.
Oh, and use whatever language you are most comfortable using.