Pjsip Android Video Call: как отобразить ваш вид в SurfaceView с помощью библиотеки Pjsip - PullRequest
0 голосов
/ 20 сентября 2019

Я выполняю SIP Video Call с использованием библиотеки Pjsip.

Мое изображение успешно передается другому человеку, но я хочу, чтобы мое изображение с камеры отображалось на экране (что-то вроде WhatsApp ).

Я обнаружил, что Pjsip использует камеру для передачи изображения.Как я могу отобразить мой Camera View в SurfaceView с использованием библиотеки Pjsip (как Я не могу использовать несколько экземпляров Camera )?

Я уже пробовал это с помощьюследующий код:

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)
        }
    }
}

}

Когда я выполнил этот код, я обнаружил предварительный просмотр, который передается на другую сторону ( зеркальный эффект ), но я хочумой взгляд.

Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 26 сентября 2019

Я сделал это: - Заменил SurfaceView на TextureView и

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

Это сработало для меня.Надеюсь, это поможет другим.

...