Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to reduce size of video before upload to server programmatically in android [closed]

I want to upload video to server, when I catch video from gallery or record from camera , the server response to me that error but when I upload video with size 2 MB , it is uploading successfully. How can I compress the video to reduce the size? I uploaded the video from face book , the size of video on my mobile is 140 MB , but face book make a process on the video and reduce it's size to 1.35 MB

like image 734
mostafa hashim Avatar asked Mar 25 '15 18:03

mostafa hashim


2 Answers

You have two way to do that:

  • Encode it to a lower bit rate and/or lower resolution. Have a look here: Is it possible to compress video on Android?.

  • Try to zip/compress it. Have a look here: http://www.jondev.net/articles/Zipping_Files_with_Android_%28Programmatically%29

Unfortunately I never tried to do that with a 140MB video. This is why I suggested to you the first library (FFmpeg 4 Android).

By the way, try to increase also your UPLOAD_LIMIT on your server. But this is not the problem, even if you increase it to 10MB you still have to compress it. Do not try to increase the UPLOAD_LIMIT to 140MB, it will cause for sure an HTTP timeout.

Otherwise you need to enable a chunked upload.

Have a look on this discussion:

Android: OutOfMemoryError while uploading video - how best to chunk?

like image 127
erlangb Avatar answered Sep 25 '22 00:09

erlangb


You can try using ffmpeg to reencode it with a lower bitrate, e.g.:

If you are trying to convert 140 MB to 1MB then

Calculate the bitrate you need by dividing your target size (in bits) by the video length (in seconds). For example for a target size of 1MB which is 8000000bits and 300 seconds of video, use a bitrate of approx 26 667 bit/s(i.e 27kbit/s):

ffmpeg -i input.mp4 -b 27k output.mp4

Other options that might be worth by setting Constant Rate Factor, which lowers the average bit rate, but retains better quality. Vary the CRF between around 18 and 24.

ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4

Happy coding :)

like image 3
Nabin Avatar answered Sep 25 '22 00:09

Nabin