8

在上传到远程服务器之前,如何在 Android 中压缩视频文件?我不想压缩文件,因为我认为这不会有太大帮助。我想压缩视频并以较低的比特率或分辨率重新编码。我们的想法是从每台设备上获取标准的 360х480、30 FPS 视频文件。这样我就可以避免拥有更好相机的用户被迫上传巨大的视频文件。

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

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

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

4

5 回答 5

9

我遇到了类似的问题。我必须在服务器中上传大小在 5.4mb 以内的视频。但由于不同手机的摄像头分辨率不同,出现了问题。这些是我选择的解决方案

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

希望这些对你有帮助

于 2014-01-03T06:36:30.760 回答
2

我之前开发的一个应用程序要求压缩后发送视频文件。以下是我遵循的有效步骤:

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

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

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

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

于 2019-02-25T13:34:19.037 回答
1

阅读关于这个图书馆,它最适合配备全高清摄像头的新手机

为 Java 和 Kotlin 压缩高质量的视频

于 2020-08-27T06:39:21.377 回答
0

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

于 2012-08-06T21:33:57.223 回答
0

从 API 级别 18 开始,您可以直接使用 android API 来进行视频编码,但如果您的目标是低于 API 级别 18,那么它就不是直截了当

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

于 2016-09-07T04:33:40.897 回答