WebRTC视频视图本地对等端的显示不正确。

4

我正在编写一个WebRTC解决方案,在使用后置摄像头时遇到了本地视图的问题(错误的旋转/不正确的视图)。

<com.src.webrtc.android.VideoView
     android:id="@+id/main_view"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />

本地视图(不正确的视图)

输入图像描述

远程视图(正确的视图:在查看作为远程用户时)

输入图像描述

1个回答

7

在使用webRTC时,我遇到了同样的问题。通过设置setMirror(false)方法,我解决了这个问题。

以下是一些代码: call_activity.xml

<org.webrtc.SurfaceViewRenderer
    android:id="@+id/fullscreen_video_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

<org.webrtc.SurfaceViewRenderer
    android:id="@+id/pip_video_view"
    android:layout_height="144dp"
    android:layout_width="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"/>

在 CallActivity.java 文件中。
SurfaceViewRenderer fullscreenRenderer = 
findViewById(R.id.fullscreen_video_view);
fullscreenRenderer.init(eglBase.getEglBaseContext(), null);
fullscreenRenderer.setScalingType(ScalingType.SCALE_ASPECT_FILL);
fullscreenRenderer.setEnableHardwareScaler(false /* enabled */);
//this code is used for rotation
fullscreenRenderer.setMirror(false);

我正在使用implementation 'org.webrtc:google-webrtc:1.0.28513'

更新: 在VideoView.kt中可以做的事情如下:

class VideoView : SurfaceViewRenderer{
constructor(context: Context) : super(context)

constructor(context: Context, attrs: android.util.AttributeSet?) : super(context, attrs)

fun init(rendererEvents: RendererCommon.RendererEvents?) {
    super.init(EglBaseProvider.getEglBase(this).eglBaseContext, rendererEvents)
    setMirror(false)
}

override fun release() {
    super.release()
    EglBaseProvider.release(this)
}

override fun setMirror(mirror: Boolean) {
    super.setMirror(mirror)
}
}

或者
class VideoView : SurfaceViewRenderer{
constructor(context: Context) : super(context)

constructor(context: Context, attrs: android.util.AttributeSet?) : super(context, attrs)

fun init(rendererEvents: RendererCommon.RendererEvents?) {
    super.init(EglBaseProvider.getEglBase(this).eglBaseContext, rendererEvents)
    super.setMirror(false)
}

override fun release() {
    super.release()
    EglBaseProvider.release(this)
}
}

谢谢!请检查我刚刚分享的 VideoView.kt 类的代码。 - Android
1
请看我的更新答案。我希望这能解决你的旋转问题。 - satya-p91
非常感谢,旋转问题已通过.setMirror(false)解决。 - Android
刚刚问了一下,我相信你想尝试一下这个问题的解决方案:https://stackoverflow.com/questions/65439358/webrtc-videoview-black-screen-while-switch-to-and-from-inbuilt-camera-app - Android

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接