你好 Android 视频专家 :)
我正在开发一个 Android 应用程序,它允许用户捕获视频并将其上传到远程服务器(它比这更复杂,但应用程序的其余部分并不重要)。由于上传要求,视频的大小必须合理,而不是超高分辨率。假设最大为 680x480 或 10Mb/分钟。这在 Apple 设备上没有问题。
我经历了一场只能被描述为一场彻头彻尾的噩梦,试图在一系列 Android 设备上以相当低的比特率可靠地捕获视频。
据我了解,有两种在 Android 上捕获视频的方法:
1) 使用媒体记录器/相机 API
2) 使用 Intent 打开摄像头视频捕获应用程序
选项 1) 提供了最大的灵活性,并允许我们轻松更改捕获分辨率。然而,Android Camera API 在一系列设备上并不可靠,而且我有非常好的信息(包括与谷歌在这个问题上联络的人),如果你使用这个 API 捕获视频,那么它会在 50% 的设备上崩溃那里的设备。Zoom Camera FX 使用 Intent 进行视频捕捉是有原因的。Zoom Camera(不同的应用程序)似乎使用媒体记录器,但有很多关于视频崩溃或无法正常工作的差评。
选项 2) 适用于各种设备,因为它使用设备上的内置应用程序。问题是您无法控制分辨率,Intent 上有质量提示,但相机应用程序通常会忽略这一点。我的三星 Galaxy S3 默认以大约 2Mb/s 的速度录制视频。这分辨率太高了。内置应用程序当然可以更改分辨率,但这依赖于用户的操作,难以控制。
我知道我可以使用 ffmpeg 之类的库在捕获后更改视频的分辨率。但是,这需要我为 Android 编译库,而且我被告知,为了在设备上合法使用解码/编码编解码器,您必须支付每份应用程序约 1 美元的许可费。由于此应用程序将免费使用,因此这不是一个选项。
这就是我所在的位置。我一直在寻找答案,但我不知道如何使用 Android 可靠地捕获低分辨率视频。
非常感谢任何帮助!
马修