使用Camera2 API时未显示本地视频流

时间:2019-01-20 09:48:26

标签: android android-camera webrtc android-camera2

我的应用程序中的所有其他内容似乎都正常,如果我使用的是Camera1 API,则远程流和本地流都可以正常显示。但是,当我尝试使用Camera2 API时,本地视频流不再显示,而是显示黑屏。但是,本地流仍在远程端上显示,并且日志中也没有错误消息。 API是我在代码中所做的唯一更改。有人知道这是怎么回事吗?

我遇到了类似的问题here,但由于setVideoHwAccelerationOptions()已贬值,相关问题正在由here所述的编码工厂处理,因此它已经过时且不可测试。

这是我建立这些工厂的代码,以防万一:

final VideoEncoderFactory encoderFactory;
final VideoDecoderFactory decoderFactory;
encoderFactory = new DefaultVideoEncoderFactory(
    rootEglBase.getEglBaseContext(), true /* enableIntelVp8Encoder */, false);
decoderFactory = new DefaultVideoDecoderFactory(rootEglBase.getEglBaseContext());

1 个答案:

答案 0 :(得分:0)

问题解决了!事实证明,所有与摄影机和渲染相关的东西都必须共享相同的EglBase实例及其context。我在初始化连接时创建了多个实例。

至于为什么本地视频流仅在使用Camera2 API时不显示,我想是因为Camera2Enumerator是需要上下文的,可能是EglBaseContext,而Camera1不需要它。 (我不确定这一点,如果我错了,请纠正我。)

无论如何, TL; DR :检查代码,并确保所有相关操作都使用单个EglBase实例