camcorderProfile.videoFrameWidth / videoFrameHeight和Camera.Parameters.getSupportedPreviewSizes()之间的区别

时间:2012-04-20 00:07:01

标签: android camera mediarecorder

我想在HTC Thunderbolt上创建一个只录制视频的应用程序,我正在尝试找到一个高质量的录制设置。我很困惑从哪个设置中选择尺寸。

1. CamcorderProfile.videoFrameWidth/Height 
2. Camera.Parameters.getSupportedPreviewSizes()

我从设备中读取了值。他们在这里:

1. CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH) returns:

   videoFrameWidth: 720
   videoFrameHeight: 480

2. Camera.Parameters.getSupportedPreviewSizes() returns:

   Camera supported preview width = 800 height = 480
   Camera supported preview width = 640 height = 480
   Camera supported preview width = 640 height = 384

现在,如果我使用

中的值
1. By calling MediaRecorder.setVideoSize(720,480), I got an error when I try to start recording. (E/MediaRecorder(4446): start failed: -16), 
2. By calling MediaRecorder.setVideoSize(800,480), it works fine.

我很困惑使用哪种设置。此外,还有2个其他功能

3. Camera.Parameters.getSupportedPictureSizes() 

4. Camera.Parameters.getSupportedVideoSizes()

我不理解这些功能之间的关系,以及用于何种目的的功能。你有什么想法吗?

谢谢, Howy

1 个答案:

答案 0 :(得分:0)

在Android API 11及更高版本中,有一个名为getPreferredPreviewSizeForVideo()的函数。

所以正确的做法是使用该API查询预览大小,使用该预览大小,然后根据该大小进行记录。

似乎API版本10及以下版本没有这样的东西,因此,Android相机非常分散。