如何在 Cordova Opentok 插件中隐藏/显示视频以在 Ionic 中进行视频通话?

Posted

技术标签:

【中文标题】如何在 Cordova Opentok 插件中隐藏/显示视频以在 Ionic 中进行视频通话?【英文标题】:How to hide/show video in Cordova Opentok plugin for video call in Ionic? 【发布时间】:2019-01-07 23:33:51 【问题描述】:

我在 Ionic 应用程序中使用这个 Opentok 插件来实现视频通话功能。我必须根据单个屏幕中的特定条件隐藏/显示视频,但我无法从给定的插件链接中找到任何帮助。

https://github.com/opentok/cordova-plugin-opentok

尝试使用 CSS 类隐藏视频

.OT_root video 
   display: none !important;

但它不起作用。

【问题讨论】:

【参考方案1】:

TokBox Developer Evangelist here(我还帮助维护Cordova OpenTok plugin)。

Cordova OpenTok 插件使用本机 OpenTok SDK,并将 Publisher 和 Subscriber 的本机 iosandroid 视图放置在 WebView div 元素的顶部。这意味着原生视图叠加在 DOM 中创建的 div 元素上。

应用 CSS 更改后,您必须调用 OT.updateViews 将此信息传递给本地层,指示视图已更改。 updateViews 方法通过 JS 桥将 DOM 位置、宽度、高度等发送到本机层,然后使用该信息适当地更新本机视图。

你可以这样做:

document.getElementById('publisher').style = 'display: none !important;';
OT.updateViews();

请注意,在上面的代码中,我们假设 publisher div 元素的 Id 设置为 publisher。您可以将代码更改为您设置的代码。

请注意,隐藏视图只会将其从屏幕上隐藏起来,但不会停止视频的发布。要停止发布,请使用 session.unpublish(publisher)publisher.destroy

【讨论】:

感谢您的快速回复。有问题的 CSS 写的对吗?你的意思是在那之后我打电话给 updateViews? 是的,没错。我已更新我的答案以反映更改 尝试过相同但不起作用。你能看看我是什么东。 keepnote.cc/opentok 我刚刚运行了你的代码,当你设置 div.style.display = 'none !important;' 时它看起来不起作用- 请改用上面的代码示例。我还继续使用您的代码更新了示例的keepnote。 出现错误无法分配给“样式”,因为它是只读属性。【参考方案2】:

如果有人仍在寻找实现 OP 要求的方法,这就是我设法实现的方法。

我尝试按照 Manik 的说明进行操作,但似乎 display: none !important; 不太可靠,因此我决定将不应显示的视频移出屏幕。

具有元素 id 'subscriber' 的订阅者的示例(隐藏):

document.getElementById('subscriber').style = 'top: 5000px!important; position: fixed!important;';
OT.updateViews();

我猜你也可以使用left 代替top

请记住,这不会中断视频流,它只是隐藏发布者/订阅者(参见 Manik 的解释)。

【讨论】:

以上是关于如何在 Cordova Opentok 插件中隐藏/显示视频以在 Ionic 中进行视频通话?的主要内容,如果未能解决你的问题,请参考以下文章

opentok cordova 应用程序需要任何优化吗?

Ionic Cordova OpenTok 无法从 IOS 发布视频

如何使用 Cordova 的 card.io 插件在 android 设备中隐藏 PayPal 徽标

Cordova 在显示初始屏幕期间隐藏状态栏

iOS8 Xcode 6 Cordova 状态栏未正确隐藏

Cordova - Android 状态栏插件