How can I compress a video file in Android before uploading to a remote server? I'm not looking to zip up the file, because I don't think that will help much. I want to compress the video and re-encode it with a lower bit-rate or resolution. The idea is to get a standard 360х480, 30 FPS video file from every device. This way I can avoid users with better cameras being forced to upload huge video files.

I know iOS makes it fairly simple to force video file resolutions. 10 second video recorded on iPhone 4: 

* high (1280х720) = ~14MB = ~11Mbit/s
* 640 (640х480) = ~4MB = ~3.2Mbit/s
* medium (360х480) = ~1MB = ~820Kbit/s
* low (144х192) = ~208KB = ~170Kbit/s

Is there any easy way to do this in Android? Do I need to find some external library that will let me re-encode the video file, then save it to the SD card (or overwrite the old video file), then upload that file? Mainly looking for general direction here and not code to copy and paste, although anything is helpful.