【问题标题】:Pjsip Android Video Call: How to display your view in a SurfaceView using Pjsip LibraryPjsip Android 视频通话:如何使用 Pjsip 库在 SurfaceView 中显示您的视图
【发布时间】:2023-03-14 05:35:01
【问题描述】:

我正在使用 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)
        }
    }
}

}

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

谁能帮我解决这个问题?

【问题讨论】:

    标签: android pjsip pjsua2


    【解决方案1】:

    我这样做了: - 将 SurfaceView 替换为 TextureView 和

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

    它对我有用。希望对其他人有所帮助。

    【讨论】:

    • 是的。但不准确@SonPham
    • 我在启动和停止传输媒体时遇到问题,有时我的应用程序在更改状态时会冻结。
    • 如何联系你? (Skype 或 Messager)
    • 你能分享一些 pjmedia_video_format_detail @Aanal Mehta。这是我的配置 cp.enc_fmt.det.vid.size.w = 720; cp.enc_fmt.det.vid.size.h = 1280; cp.enc_fmt.det.vid.avg_bps = 500*1000; cp.enc_fmt.det.vid.max_bps = 1024*2*1000; cp.enc_fmt.det.vid.fps.num = 30; cp.enc_fmt.det.vid.fps.denum = 1;
    • @SonPham 这是我的视频编解码器格式 /*设置视频编解码器*/ val param = ep?.getVideoCodecParam("H264") val encFormatVideo = param?.encFmt val decFormatVideo = param?.decFmt encFormatVideo ?.height = 320 encFormatVideo?.width = 240 decFormatVideo?.height = 320 decFormatVideo?.width = 240 参数?.encFmt = encFormatVideo 参数?.decFmt = decFormatVideo ep?.setVideoCodecParam("H264", param)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多