Android相机 – 录制视频时预览放大

Android相机 – 录制视频时预览放大,第1张

概述我一直试图弄清楚一段时间,但由于某种原因,当我开始使用相机录制视频时,预览放大.我从以下示例中获取以下代码: @Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Camera.Parameters myParameters = mCamera.getP 我一直试图弄清楚一段时间,但由于某种原因,当我开始使用相机录制视频时,预览放大.我从以下示例中获取以下代码:
@OverrIDepublic voID surfaceChanged(SurfaceHolder holder,int format,int wIDth,int height) {    Camera.Parameters myParameters = mCamera.getParameters();    List<Camera.Size> sizes = myParameters.getSupportedPrevIEwSizes();    Camera.Size myBestSize = getBestPrevIEwSize(sizes,wIDth,height);    if (myBestSize != null) {        myParameters.setPrevIEwSize(myBestSize.wIDth,myBestSize.height);        myParameters.setVIDeoStabilization(false);        mCamera.setParameters(myParameters);        mCamera.startPrevIEw();        mCamera.unlock();    }}private Camera.Size getBestPrevIEwSize(List<Camera.Size> sizes,int height) {    final double ASPECT_TolERANCE = 0.05;    double targetRatio = (double) wIDth / height;    if (sizes == null) return null;    Camera.Size optimalSize = null;    double minDiff = Double.MAX_VALUE;    int targetHeight = height;    // Find size    for (Camera.Size size : sizes) {        double ratio = (double) size.wIDth / size.height;        if (Math.abs(ratio - targetRatio) > ASPECT_TolERANCE) continue;        if (Math.abs(size.height - targetHeight) < minDiff) {            optimalSize = size;            minDiff = Math.abs(size.height - targetHeight);        }    }    if (optimalSize == null) {        minDiff = Double.MAX_VALUE;        for (Camera.Size size : sizes) {            if (Math.abs(size.height - targetHeight) < minDiff) {                optimalSize = size;                minDiff = Math.abs(size.height - targetHeight);            }        }    }    return optimalSize;}

但录制视频时,预览仍会放大.我尝试手动将预览大小设置为1280×720,但是它在我测试的所有设备上都不起作用,有些显示黑色的SurfaceVIEw.

录制视频时有什么办法阻止预览放大吗? StackOverflow中的这些解决方案都不会似乎有效.

编辑:我尝试使用自己的onMesaure方法创建了一个自定义的SurfaceVIEw,但是当我启动MediaRecorder时,我收到一个-19错误. (不顾赏金中的-16)

解决方法 我对您所谈论的缩放类型感到困惑,可能是一个软件缩放,或者可能是自动对焦,所以我会提出不同的潜在提示,导致最终的解决方案:

>实现mCamera.setZoomchangelistener,例如:

mCamera.setZoomchangelistener(new Camera.OnZoomchangelistener() {    @OverrIDe public voID onZoomChange(int i,boolean b,Camera camera) {        Log.e("StackOverflow","Zoom just changed !");        // Inspect things from here    }});

>禁用平滑缩放:

mCamera.stopSmoothZoom(); // My device doesn't support it,but maybe your device does

>检查所有的相机Camera.Parameters:

Log.e("StackOverflow","All Camera parameters :");for(String s : mCamera.getParameters().flatten().split(";"))    Log.e("StackOverflow",s + "\n");

>然后切换可以缩放相关的任何东西,例如:

Camera.Parameters parameters = mCamera.getParameters();parameters.setZoom(100); // My device support some values in the range 100 | 400parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);parameters.setVIDeoStabilization(false);// Don't forget to add the new parameters to the camera :mCamera.setParameters(parameters);

问候

总结

以上是内存溢出为你收集整理的Android相机 – 录制视频时预览放大全部内容,希望文章能够帮你解决Android相机 – 录制视频时预览放大所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1131914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存