我想上传视频到服务器,当我从相册中选取或从摄像头录制时,服务器会返回错误。但是当我上传2 MB大小的视频时,上传是成功的。如何压缩视频以减小其大小?我从 Facebook 上上传了这个视频,手机上的视频大小为 140 MB,但 Facebook 对视频进行了处理,并将其大小降至1.35 MB。
我想上传视频到服务器,当我从相册中选取或从摄像头录制时,服务器会返回错误。但是当我上传2 MB大小的视频时,上传是成功的。如何压缩视频以减小其大小?我从 Facebook 上上传了这个视频,手机上的视频大小为 140 MB,但 Facebook 对视频进行了处理,并将其大小降至1.35 MB。
你有两种方法可以做到这一点:
将其编码为较低的比特率和/或较低的分辨率。在这里查看: Android上是否可能压缩视频?.
尝试进行压缩/压缩。在这里查看:http://www.jondev.net/articles/Zipping_Files_with_Android_%28Programmatically%29
不幸的是,我从未尝试过使用140MB的视频进行此操作。这就是为什么我建议您使用第一个库(FFmpeg 4 Android)。
顺便说一下,还要尝试增加服务器上的UPLOAD_LIMIT。但这不是问题,即使将其增加到10MB,您仍然需要对其进行压缩。不要尝试将UPLOAD_LIMIT增加到140MB,否则肯定会导致HTTP超时。
否则,您需要启用分块上传。
请参阅此讨论:
如果你想将140 MB 转换为 1MB,则需要通过视频长度(以秒为单位)将目标大小(以比特为单位)除以目标大小来计算所需的比特率。例如,对于一个大小为1MB、长度为300秒的视频,使用约26 667 bit/s(即27kbit/s)的比特率:
ffmpeg -i input.mp4 -b 27k output.mp4
其他值得设置的选项包括恒定码率因子(Constant Rate Factor, CRF),可以降低平均比特率,但保留更好的质量。将CRF在18到24之间变化。
ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4
编码愉快 :)