VideoCapture 錄影

      在〈VideoCapture 錄影〉中尚無留言

VideoCapture 錄影

本篇說明使用 VideoCapture 錄影及錄音。

VideoCapture

ImageCapture 是取得照片的重要物件,而 VideoCapture 則是取得錄影的物件。上一篇相機拍照中雖有說到大部份的手機不允許 ImageCapture 及 VideoCapture 二者共存在 useCaseGroup 中,但小米手機就是可以,而且錄影期間進行拍照,錄影完全不會停頓。所以本篇就以 VideoCapture 進行錄影。

previewCamera 設定

首先 MahalCamerax 的 previewCamera 方法的 UseCaseGroup 增加 videoCapture。請注意 imageAnalysis 不能與 videoCapture 同時並存,所以記得把 imageAnalysis 拿掉,修改後的結果如下。

class MahalCameraX(....){

    val recorder = Recorder.Builder()
        .setQualitySelector(qualitySelector)
        .build()
    val videoCapture = VideoCapture.withOutput(recorder)
    fun previewCamera(){
        var preview= Preview.Builder()
            .setTargetAspectRatio(AspectRatio.RATIO_16_9)
            .build()
        preview.setSurfaceProvider(cameraScreen.surfaceProvider)
        val cameraProviderFuture= ProcessCameraProvider.getInstance(context)

        cameraProviderFuture.addListener(
            Runnable {
                val cameraProvider=cameraProviderFuture.get()
                val cameraLens= CameraSelector.Builder()
                    .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                    .build()
                val useCaseGroup = UseCaseGroup.Builder()
                    .addUseCase(preview)
                    .addUseCase(imageCapture)
                    //.addUseCase(imageAnalysis)
                    .addUseCase(videoCapture)
                    .build()
                try{
                    cameraProvider.unbindAll()
                    camera=cameraProvider.bindToLifecycle(
                        context as MainActivity,cameraLens,useCaseGroup
                    )
                }
                catch(e:Exception){}
            },
            ContextCompat.getMainExecutor(context)
        )
    }
}

startRecordVideo

在 MahalCameraX 先新增 recording 及 recordingListener 二個物件變數,然後在 startRecordVideo 方法使用 videoCapture.output 即可啟動錄影

🔒 更多內容,請登入會員繼續閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *