Android不显示Camera视频获取摄像头视频帧数据

1、在Activity界面代码中:
private var mCamera: Camera? = null
private val mWidth = GwApplication.DEFAULT_REMOTE_WIDTH_EXT
private val mHeight = GwApplication.DEFAULT_REMOTE_HEIGHT_EXT
private var imgData: ImageData = ImageData(mWidth, mHeight)

/**
 * Camera初始化
 **/
private fun initCameara() {
    //log("====initCameara()")
    try {
        mCamera = Camera.open(GwApplication.DEFAULT_CR_CAMERA)
        val params = mCamera!!.getParameters()
        params.previewFormat = ImageFormat.NV21
        params.setPreviewSize(mWidth, mHeight)
        //params.pictureFormat = ImageFormat.NV21
        params.setPictureSize(mWidth, mHeight)
        //params.zoom = 0
        //params.setRotation(0)
        params.setPreviewFpsRange(10, 15)
        mCamera!!.setParameters(params)
    } catch (ex: RuntimeException) {
        ex.printStackTrace()
    }
}

/**
 * 开始监听回调,设置预览
 **/
private fun setCallback() {
    //log("====setCallback()")
    try {
        // 主要是surfaceTexture获取预览数据,但不显示
        val surfaceTexture = SurfaceTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES)
        mCamera!!.setPreviewTexture(surfaceTexture)
    } catch (e: IOException) {
        e.printStackTrace()
    }
    // 设置 mCamera.addCallbackBuffer(mPreviewData) 后才会回调,旨在每处理完一帧数据回调一次
    mCamera!!.setPreviewCallbackWithBuffer(mPreviewCallback)
    mCamera!!.addCallbackBuffer(imgData.data)
    mCamera!!.startPreview()
}

/**
 * 帧数据监听实现
**/
private val mPreviewCallback =
    android.hardware.Camera.PreviewCallback { data, camera -> // 在此处处理当前帧数据,并设置下一帧回调
        //log("====PreviewCallback()")
        imgData.setTempData(data)
        mCamera!!.addCallbackBuffer(imgData.data)
        //        if (isShow) {
        //            showPic(imgData.previewData)
        //        }
    }

/**
 * 关闭相机
**/
private fun closeCamera() {
    mCamera!!.stopPreview()
    mCamera!!.setPreviewCallbackWithBuffer(n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值