我正在编写一个应用程序,我允许用户使用手机摄像头捕获视频。我使用自己的代码来录制视频,而不是内置在相机应用程序中的Androids。
一切正常,但我需要能够访问支持的摄像头分辨率列表,以便我可以在运行时选择使用哪一个。我正在寻找像getSupportedPictureSizes()
这样的东西,但是对于视频。 Android 3.0具有此功能,但我正在寻找2.2的东西。
截至目前我正在使用CamcorderProfile.QUALITY_HIGH / QUALITY_LOW
,但这只给了我两个选项,在我测试的手机上,文件大小在每个极端。(QUALITY_LOW是216 kb / s和QUALITY_HIGH是> 3 MB / s)
任何帮助将不胜感激, 谢谢!
答案 0 :(得分:9)
您是否尝试使用Camera.Parameters
课程中的getSupportedVideoSizes()
method?
public List<Camera.Size> getSupportedVideoSizes()
此方法返回Size对象列表。如果相机没有单独的预览和视频输出,它将返回null
。 The answer here表示当返回null
时,您可以使用getSupportedPreviewSizes()
列表。
答案 1 :(得分:5)
好的,我想我明白了。它似乎在我测试的手机上正常工作。
List<Size> tmpList = camera.getParameters().getSupportedPreviewSizes();
final List<Size> sizeList = new Vector<Size>();
//compair the apsect ratio of the candidate sizes against the real ratio
Double aspectRatio = (Double.valueOf(getWindowManager().getDefaultDisplay().getHeight()) / getWindowManager().getDefaultDisplay().getWidth());
for(int i=0; i<tmpList.size(); i++){
Double tmpRatio = Double.valueOf(tmpList.get(i).height) / tmpList.get(i).width;
if(Math.abs(aspectRatio - tmpRatio) < .15){
sizeList.add(tmpList.get(i));
}
}