Pjsip Android 视频通话:倒置视频预览
Pjsip Android Video Call: Inverted Video Preview
I am using Pjsip library for SIP Video call. I am facing issue
displying my own view in a SurfaceView.
图片如下:
预期观看次数:
在 onCallMediaState
中获取预览 ID
mVideoPreview = VideoPreview(mediaInfo.videoCapDev)
mVideoWindow = VideoWindow(mediaInfo.videoIncomingWindowId)
我用来在 SurfaceView 中显示此预览的代码:
fun updateVideoPreview(holder: SurfaceHolder) {
if (SipManager.currentCall != null &&
SipManager.currentCall?.mVideoPreview != null) {
if (videoPreviewActive) {
val vidWH = VideoWindowHandle()
vidWH.handle?.setWindow(holder.surface)
val vidPrevParam = VideoPreviewOpParam()
vidPrevParam.window = vidWH
try {
SipManager.currentCall?.mVideoPreview?.start(vidPrevParam)
} catch (e: Exception) {
println(e)
}
} else {
try {
SipManager.currentCall?.mVideoPreview?.stop()
} catch (e: Exception) {
println(e)
}
}
}
}
我知道另一边的人总是会镜像 观看我的视频。但在我 自己的观点 的情况下,这不应该发生。
我的感觉是我正在显示发送给其他人的预览。我没有得到任何关于如何使用 Pjsip 库显示我自己的视图(没有镜像效果)的提示。
谁能帮我解决这个问题?
除了使用 SurfaceView,您还可以使用 TextureView 进行预览,之后您可以翻转它。看看How to keep android from inverting the image from the front facing camera?作为参考
我所做的是将 SurfaceView 替换为 TextureView,然后检查:
if (isFrontCamera) {
val matrix = Matrix()
matrix.setScale(-1.0f, 1.0f)
matrix.postTranslate(width.toFloat(), 0.0f)
surfacePreviewCapture.setTransform(matrix)
}
它奏效了。
希望它能帮助别人。 :)
====== 更新 ======
当我检查我的后置摄像头时,视图也被翻转到那里所以我需要这样做才能使它正确:
surfacePreviewCapture.setTransform(null)
I am using Pjsip library for SIP Video call. I am facing issue displying my own view in a SurfaceView.
图片如下:
预期观看次数:
mVideoPreview = VideoPreview(mediaInfo.videoCapDev)
mVideoWindow = VideoWindow(mediaInfo.videoIncomingWindowId)
我用来在 SurfaceView 中显示此预览的代码:
fun updateVideoPreview(holder: SurfaceHolder) {
if (SipManager.currentCall != null &&
SipManager.currentCall?.mVideoPreview != null) {
if (videoPreviewActive) {
val vidWH = VideoWindowHandle()
vidWH.handle?.setWindow(holder.surface)
val vidPrevParam = VideoPreviewOpParam()
vidPrevParam.window = vidWH
try {
SipManager.currentCall?.mVideoPreview?.start(vidPrevParam)
} catch (e: Exception) {
println(e)
}
} else {
try {
SipManager.currentCall?.mVideoPreview?.stop()
} catch (e: Exception) {
println(e)
}
}
}
}
我知道另一边的人总是会镜像 观看我的视频。但在我 自己的观点 的情况下,这不应该发生。 我的感觉是我正在显示发送给其他人的预览。我没有得到任何关于如何使用 Pjsip 库显示我自己的视图(没有镜像效果)的提示。
谁能帮我解决这个问题?
除了使用 SurfaceView,您还可以使用 TextureView 进行预览,之后您可以翻转它。看看How to keep android from inverting the image from the front facing camera?作为参考
我所做的是将 SurfaceView 替换为 TextureView,然后检查:
if (isFrontCamera) {
val matrix = Matrix()
matrix.setScale(-1.0f, 1.0f)
matrix.postTranslate(width.toFloat(), 0.0f)
surfacePreviewCapture.setTransform(matrix)
}
它奏效了。 希望它能帮助别人。 :)
====== 更新 ======
当我检查我的后置摄像头时,视图也被翻转到那里所以我需要这样做才能使它正确:
surfacePreviewCapture.setTransform(null)