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)
}
它对我有用。希望它能帮助别人。
我正在使用 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 和
替换了 SurfaceViewif (isFrontCamera) {
val matrix = Matrix()
matrix.setScale(-1.0f, 1.0f)
matrix.postTranslate(width.toFloat(), 0.0f)
surfacePreviewCapture.setTransform(matrix)
}
它对我有用。希望它能帮助别人。