Pjsip Android 视频通话:如何使用 Pjsip 库在 SurfaceView 中显示您的视图

Pjsip Android Video Call: How to display your view in a SurfaceView using Pjsip Library

我正在使用 Pjsip 库实现 SIP 视频通话

我的视图已成功传输给其他人,但我想要在屏幕上显示我的相机视图(类似于 WhatsApp)。

我发现Pjsip 正在使用摄像头 传输视图。如何使用 Pjsip 库在 SurfaceView 中显示我的相机视图(因为 我不能使用相机的多个实例)?

我已经使用以下代码尝试过此操作:

fun updateVideoPreview(holder: SurfaceHolder) {
if (SipManager.getInstance()?.activeCalls?.get(callId) != null &&
        SipManager.getInstance()?.activeCalls?.get(callId)?.mVideoWindow != null &&
        SipManager.getInstance()?.activeCalls?.get(callId)?.mVideoPreview != null) {
    if (videoPreviewActive) {
        val vidWH = VideoWindowHandle()
        vidWH.handle?.setWindow(holder.surface)
        val vidPrevParam = VideoPreviewOpParam()
        vidPrevParam.window = vidWH
        vidPrevParam.show = true
        try {
            SipManager.getInstance()?.activeCalls?.get(callId)?.mVideoPreview?.start(vidPrevParam)
        } catch (e: Exception) {
            println(e)
        }
    } else {
        try {
            SipManager.getInstance()?.activeCalls?.get(callId)?.mVideoPreview?.stop()
        } catch (e: Exception) {
            println(e)
        }
    }
}

}

当我执行这段代码时,我发现传输到另一端的是预览(镜像效果),但我想要的是我自己的视图。

谁能帮我解决这个问题?

我这样做了: - 用 TextureView 和

替换了 SurfaceView
if (isFrontCamera) {
    val matrix = Matrix()
    matrix.setScale(-1.0f, 1.0f)
    matrix.postTranslate(width.toFloat(), 0.0f)
    surfacePreviewCapture.setTransform(matrix)
}

它对我有用。希望它能帮助别人。