gpt4 book ai didi

android - 使用camera2 API createCaptureSession后,Android无法仅播放视频音频

转载 作者:行者123 更新时间:2023-12-02 13:39:38 28 4
gpt4 key购买 nike

Android版本:5.1
嗨,我注意到之后的我的应用程序使用 camera2 API创建CaptureSession (快照/记录),我的android设备不再正常播放视频,仅具有黑屏的音频...而不仅仅是我应用程序,所有其他流式应用程序都出现相同的问题。我需要重新启动才能解决此问题。顺便说一句,我的设备是自定义的,所以我不能使用ADB,并且模拟器中甚至都不会发生此问题。.我现在什么都没有,它正在杀死我。有人可以帮我吗?我会很感激.. !!以下是我createCaptureSession和发布的方式。也许我的代码有问题?
快照:

...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)
当 Activity 结束时:
        cameraPreview?.surfaceTextureListener = null

cameraCaptureSession?.stopRepeating()

cameraCaptureSession?.close()

cameraDevice?.close()

cameraDevice = null

最佳答案

没有设备的日志很难说,但是很可能设备的媒体编解码器堆栈出了问题。使用MediaRecorder完成应用程序后,编解码器将处于不良状态,需要重新启动才能再次使用,以进行编码或解码。
您用于MediaRecord的特定设置可能会触发此操作,但是无论您的设置是什么,在正确构建的设备上都不会发生这种情况。
不幸的是,如果这是问题所在,则有可能需要将其固定在设备的编解码器HAL中(如果已从AOSP版本进行了修改),或者需要在stagefright媒体代码中进行修复。确实,没有日志是不可能知道错误的所在,但是编解码器关闭中的死锁是一种可能。

关于android - 使用camera2 API createCaptureSession后,Android无法仅播放视频音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64602702/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com