Mis*_*Mat 9 video android ffmpeg video-capture
你好Android视频专家:)
我正在开发一个Android应用程序,它允许用户捕获视频并将其上传到远程服务器(它比这更复杂,但应用程序的其余部分并不重要).由于上传要求,视频的大小合理,因此不是超高分辨率.假设最大值为680x480或10Mb /分钟.这对Apple设备没有问题.
我曾经有过一个完全噩梦,试图在一系列Android设备上以可靠的低比特率捕获视频.
据我了解,有两种方法可以在Android上捕获视频:
1)使用Media Recorder/Camera API
2)使用Intent打开摄像机视频捕获应用程序
选项1)提供了最大的灵活性,使我们可以轻松更改捕获分辨率.然而,Android Camera API在各种设备上都不可靠,而且我有非常好的信息(包括那些在这个问题上与Google联系的人),如果你使用这个API捕获视频,那么它会在50%的那里的设备.Zoom Camera FX使用Intent进行视频捕捉是有原因的.变焦相机(不同的应用程序)似乎使用媒体记录器,但有很多不良评论视频崩溃或不工作.
选项2)适用于各种设备,因为它使用设备上的内置应用程序.问题是你无法控制分辨率,Intent上有质量提示,但相机应用程序通常会忽略这一点.我的三星Galaxy S3默认以约2Mb/s的速度录制视频.这是太高的分辨率.内置应用程序当然可以改变分辨率,但这依赖于用户难以控制的动作.
我知道我可以使用诸如ffmpeg之类的库来在捕获后更改视频的分辨率.然而,这需要我为Android编译库,而且我也被告知,为了在设备上合法使用解码/编码编解码器,您必须支付每个应用程序副本大约1美元的许可费.由于此应用程序可以免费使用,因此不能选择.
这就是我所处的位置.我已经搜索了很长时间以获得答案,但我无法弄清楚如何使用Android可靠地捕获低分辨率视频.
非常感谢任何帮助!
马修
我认为您可以使用getSupportedPictureSizes来获取每个移动摄像头支持的最小尺寸,然后您可以在SetVideoSize(width, height)中使用带有这些参数的 mediaRecorder