2014-09-24 34 views
2

我使用的引导3.0.2,并已使用该示例应用程序的cordova opentok插件开始这个页面...我已经添加了2.2版本的opentok API对于桌面版本,以及Cordova应用程序的相同版本。无法在opentok中的视频div滚动科尔多瓦应用程序

我的问题是,如果我有四个视频窗口,连接到同一个会话,我的桌面应用程序,使用2.2 JS API工作创建正确的div,我将它们追加到容器div。所有这些工作。

但是,Android Cordova应用程序会创建视频,并将div附加到页面上,但如果存在两个以上的尖叫声,则无法看到两个以上的div,因为底层div会随页面滚动,但视频本身保持在相同的位置,一个在另一个之上,每个都将父亲推下屏幕。事实上,如果我试图滚动页面,我正在观看实况视频背后的“视频”背景。我认为如果我将视频容器附加到“mySubDiv”div标签上,那么它将根据其容器对象进行滚动。但是,显然它不像桌面版本那样工作。

下面的代码。这非常简单,如果需要,我会添加更多,但对于在科尔多瓦玩过此对象的人来说,这应该足够了。如果没有,就这么说。谢谢。

<!-- PART OF MY HTML FILE 

<div class="container-fluid"> 
    <h2>Media Detail</h2> 
    <div id="myPublisherDiv"></div> 
    <div id="mySubDiv"></div> 
</div> 
--> 



// JS FILE 
function onDeviceReady() 
{ 

var apiKey = "MY_KEY"; 
var sessionId = "MY_SESSION"; 
var token  = "T1==MY_REALLY_LONG_TOKEN_STRING"; 

// Very simple OpenTok Code for group video chat 
var publisherOptions = {name:"WorkAdvisor", publishVideo: true, insertMode: "after"}; 
var publisher = TB.initPublisher(apiKey,'myPublisherDiv',publisherOptions,); 

videoSession = TB.initSession(apiKey, sessionId); 

videoSession.on({ 
    'streamCreated': function(event){ 
     var div = document.createElement('div');   
     div.setAttribute('id', 'stream' + event.stream.streamId); 
     var oldDiv = document.getElementById('mySubDiv'); 
     oldDiv.appendChild(div); 
     videoSession.subscribe(event.stream, div.id, {subscribeToAudio: false}); 
    } 
}); 
    videoSession.connect(token, function(){ 
    videoSession.publish(publisher); 
}); 

}

回答

2

发生这种情况,因为实际的视频流是不实际的网络元素。 Cordova插件创建了一个假视频,它是视频的占位符,将div的位置和大小传递给本机代码,本机代码在cordova的ontop位置绘制视频。在滚动期间,您可以通过调用TB.updateViews()将本地视频元素更新到Web元素新位置的位置来解决此问题。

+0

你有一个调用TB.updateViews的例子的链接吗?无论哪种方式,我都非常感谢您在项目中所做的所有工作。它确实帮助了我,并使我能够向我的管理团队提交原型以供审查。做得好。 – Jerry 2014-09-30 16:44:52

相关问题