我的应用程序中的所有其他内容似乎都正常,如果我使用的是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());
答案 0 :(得分:0)
问题解决了!事实证明,所有与摄影机和渲染相关的东西都必须共享相同的EglBase
实例及其context
。我在初始化连接时创建了多个实例。
至于为什么本地视频流仅在使用Camera2
API时不显示,我想是因为Camera2Enumerator
是需要上下文的,可能是EglBaseContext
,而Camera1
不需要它。 (我不确定这一点,如果我错了,请纠正我。)
无论如何, TL; DR :检查代码,并确保所有相关操作都使用单个EglBase
实例。