【发布时间】:2020-10-30 04:22:46
【问题描述】:
安卓版本:5.1
您好,我注意到在我的应用使用 camera2 API 创建CaptureSession(快照/记录)后,我的 android 设备不再正确播放视频,只有黑屏的音频...而且不仅仅是我的应用程序,所有其他流媒体应用程序都会出现同样的问题。我需要重新启动才能解决此问题。顺便说一句,我的设备是定制的,所以我不能使用 ADB,而且这个问题甚至不会在我的模拟器中发生。我现在不知道,这让我很生气。有人可以帮我吗?我会很感激的..!!下面是我如何创建CaptureSession 和发布。也许我的代码有问题?
快照:
...after camera opened
cameraDevice = p0;
previewTextureListener = PreviewSurfaceTextureListener()
cameraPreview.surfaceTextureListener = previewTextureListener
cameraPreview.setTransform(transform)
...after previewTextureListenerAvailable
val captureWidth = 1920
val captureHeight = 1080
previewSurfaceTexture = surfaceTexture
previewSurfaceTexture?.setDefaultBufferSize(captureWidth, captureHeight)
previewSurface = Surface(previewSurfaceTexture)
val sessionStateCallback = SessionStateCallback()
imageReader = ImageReader.newInstance(captureWidth, captureHeight, ImageFormat.JPEG, 1)
imageReader?.setOnImageAvailableListener(ImageAvailableCallback(), cameraHandler)
imageSurface = imageReader?.surface
val outputs = mutableListOf(previewSurface, imageSurface)
cameraDevice?.createCaptureSession(outputs, sessionStateCallback, mainHandler)
...after sessionStateConfigured
val requestBuilder = cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)
requestBuilder?.addTarget(previewSurface!!)
val request = requestBuilder?.build()
cameraCaptureSession?.setRepeatingRequest(request!!, PreviewImageCallback(), mainHandler)
记录:
// Start a capture session
cameraDevice?.createCaptureSession(listOf(previewSurface, mediaRecorder?.surface), RecordSessionStateCallback(), cameraHandler)
... after RecordSessionConfigured
val recordRequest = cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
recordRequest?.addTarget(previewSurface!!);
recordRequest?.addTarget(mediaRecorder?.surface!!)
cameraRecordSession?.setRepeatingRequest(recordRequest?.build()!!, PreviewImageCallback(), cameraHandler)
活动onDestroy时:
cameraPreview?.surfaceTextureListener = null
cameraCaptureSession?.stopRepeating()
cameraCaptureSession?.close()
cameraDevice?.close()
cameraDevice = null
【问题讨论】:
标签: android kotlin android-videoview android-camera2