2016-08-04 2 views
0

MediaRecorderを使用してビデオを録画するとき、ビデオサイズを設定したいです。カメラgetParameters()はgetSupportedVideoSizesをnullに戻し、getSupportedPreviewSizesは正常です.1920x1088,1280x960、 1280x720,960x540,720x540,720x480,640x480,352x288,320x240,176x144いつかMediaRecorderの値videoSizeを設定すると、バインドされたSurfaceViewの画面が数秒後に凍結され、record.Soを開始するとどうなりますか?getSupportedVideoSizesがnullを返すときにVideoSizeを設定する方法

答えて

1

マイリッテ回避策このあった:/(!!しないスクリーン)カメラの回転によれ

/** 
    * Returns the optimal preview size for photo shots 
    * 
    * @param currentActivity 
    * @param sizes 
    * @param widthImage 
    * @param heightImage 
    * @return 
    */ 
    public static Size getOptimalPreviewSize(Activity currentActivity, 
              List<Size> sizes, int widthImage, int heightImage) { 
     final double ASPECT_TOLERANCE = 0.05; 
     double targetRatio = 0; 

     if (sizes == null) return null; 

     Camera.Size optimalSize = null; 
     double minDiff = Double.MAX_VALUE; 

     // Recupero le dimensioni dello schermo per confrontare le dimensioni della 
     // preview con quelle dello schermo, in modo tale che a video veda esattamente ciò che poi 
     // andrò a fotografare 
     int widthScreen = currentActivity.getWindow().getDecorView().getWidth(); 
     int heightScreen = currentActivity.getWindow().getDecorView().getHeight(); 

     targetRatio = (double) widthImage/heightImage; 

     if (Util.getDisplayRotation(currentActivity) == 0 || Util.getDisplayRotation(currentActivity) == 180) { 
      int temp = heightScreen; 
      heightScreen = widthScreen; 
      widthScreen = temp; 
     } 

     int targetHeight = heightScreen; 

     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) { 
       if (size.width <= widthScreen && size.height <= heightScreen) { 
        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; 
    } 

及び画像の寸法:Util.getOptimalPreviewSizeだっ

public void setVideoSize(int width, int height) { 
    // Just set Preview size... 
    Camera.Parameters params = getParameters(); 
    List<Camera.Size> sizes = params.getSupportedPreviewSizes(); 
    Camera.Size preferred = params.getPreferredPreviewSizeForVideo(); 
    if (preferred == null) { 
     preferred = sizes.get(0); 
    } 

    Camera.Size optimalPreview = Util.getOptimalPreviewSize(mContext, sizes, 
      width, height); 
    setPreviewSize(optimalPreview.width, optimalPreview.height); 
} 

それをキャプチャするビデオは、ビデオ/画像

0

の最良のプレビューサイズを見つけます。最後に、私は問題を解決するため、プレビューtextureviewが私の活動のトップである、いくつかの他behiがありますnd。私は、Javaコードでtextureviewの幅と高さを設定するが、私は、DPとXMLでこれを設定した場合、すべてがOKですので、プレビューtextureviewの(幅と高さ)との関係は何であると記録映像の(幅と高さ)

関連する問題