WebRTC VideoView 本地对等点的视图不正确
WebRTC VideoView incorrect view for local peer
我正在编写 WebRTC 解决方案,但在使用后置摄像头时本地视图出现问题(旋转错误/视图不正确)
<com.src.webrtc.android.VideoView
android:id="@+id/main_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
局部视图(视图不正确)
远程视图(正确视图:作为远程用户查看时)
我在使用 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)
}
}
我正在编写 WebRTC 解决方案,但在使用后置摄像头时本地视图出现问题(旋转错误/视图不正确)
<com.src.webrtc.android.VideoView
android:id="@+id/main_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
局部视图(视图不正确)
远程视图(正确视图:作为远程用户查看时)
我在使用 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)
}
}