Camera.Parameters.setRecordingHint and aspect rati

2019-02-13 18:35发布

问题:

I've found some odd behavior around Camera.Parameters.setRecordingHint that I'd like to understand better.

If I set it to true, the size of the preview image can come back different from what I pass to setPreviewSize. It depends on what size I set it to-- some aspect ratios work and some don't.

See the screenshots below-- setPreviewSize has been set to 640x480 for both, but one has setRecordingHint to true and the other to false. I have the code that produces this effect on GitHub.

Is this expected behavior? The docs for setRecordingHint don't indicate anything like this.

回答1:

You need to set video-size parameter to the correct value. I had the same problem - preview size was 640x480 and the preview appeared stretched while using setRecordingHint(true). I then used getParameters().flatten() to print out all parameters set for my Camera device. My video-size parameter was actually set to 1920x1080 causing the incorrect aspect ratio. You can change this parameter using params.set("video-size", "WxH"). Only then is the aspect ratio correct.



回答2:

i've seen a lot of random behavior around this and it unfortunately depends on the oem as well. i see a difference in framerate as well on some phones, like nexus 4 preview framerate drops in half. we depend on the preview frame callback to come at our desired framerate so we have to switch it on phone model unfortunately.