Android上传到服务器之前压缩视频

时间:2012-07-03 15:35:12

标签: android video compression

如何在上传到远程服务器之前在Android中压缩视频文件?我不打算压缩文件,因为我认为这不会有多大帮助。我想压缩视频并以较低的比特率或分辨率重新编码。我们的想法是从每个设备获得标准的360х480,30FPS视频文件。通过这种方式,我可以避免使用更好的摄像头的用户上传大量视频文件。

我知道iOS使得强制视频文件分辨率相当简单。 iPhone 4上录制的10秒视频:

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

在Android中有没有简单的方法可以做到这一点?我是否需要找到一些外部库,让我重新编码视频文件,然后将其保存到SD卡(或覆盖旧的视频文件),然后上传该文件?主要是在这里寻找总体方向而不是复制和粘贴的代码,尽管任何事情都有帮助。

5 个答案:

答案 0 :(得分:7)

我遇到了类似的问题。由于不同手机的相机分辨率不同,我不得不在服务器上传大小在5.4mb.bt以内的视频,这是一个问题。这些是我选择的解决方案

mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); mediaRecorder.setVideoEncodingBitRate(690000);

希望这些能帮到你

答案 1 :(得分:0)

我们决定将此功能保存到项目的另一次迭代中。我们选择警告用户大数据有效负载(特别是如果他们不在Wi-Fi上)。我相信这可以做到,而且tabbykitten提供的链接是我在这个主题上发现的最好的相关SO帖子。

答案 2 :(得分:0)

从Android 18开始,您可以使用直接的Android API进行视频编码,但如果您的目标是低于API级别18,则不能直接进行

以下链接执行编码 https://github.com/google/grafika/blob/master/src/com/android/grafika/VideoEncoderCore.java

答案 3 :(得分:0)

我之前开发的一个应用程序具有在压缩后发送视频文件的要求。这是我执行的步骤:

  1. 使用android中的Silicompressor库压缩文件。在后台线程上运行压缩任务。

  2. 输出文件格式的MIME类型为“ video / raw”。您可以在logcat中进行检查。因此,您需要在服务器中添加此mime类型,以便成功上传压缩文件格式。

  3. 完成此操作后,尝试发送压缩文件,它应该可以工作。

确保服务器接受您要上传到服务器的文件的MIME类型。

答案 4 :(得分:0)

阅读有关此库的信息,这对于拥有全高清摄像头的新手机来说是最好的

Compress Video with high quality for Java and Kotlin