好吧,我有兩個video.js播放器(canv1和canv2),每個播放同一個視頻的副本。我想在Canv1的某個時間碼處暫停canv2,然後在canv1的後續時間碼處,將canv2與canv1同步並播放。同步兩個視頻與Video.JS
canv2可以暫停自己,然後把自己趕上canv1的目標。問題是,我遇到了我的同步功能問題。有一些滯後,所以當我同步我失去7到10幀的視頻。
所以這裏的概念。此代碼使用Video.JS API。 https://github.com/zencoder/video-js/blob/master/docs/api.md
var conchShell = canv1; // Lord of the Flies, Bitch!
// Accepts player objects as arguments - canv1, canv2
function pause(){
for (var i = 0, j = arguments.length; i < j; i++){
arguments[i].pause();
console.log(arguments[i] + '1 is paused'); /* TODO: REMOVE CONSOLE LOGS BEFORE DEPLOYMENT */
}
}
function play(){
for (var i = 0, j = arguments.length; i < j; i++){
arguments[i].play();
console.log(arguments[i] + '1 is playing');
}
}
function syncToConchShell() {
for (var i = 0, j = arguments.length; i < j; i++){
arguments[i].currentTime(conchShell.currentTime());
console.log(arguments[i] + 'was synchronized with' + conchShell);
}
}
conchShell是具有主時間線,向其中其他玩家同步播放器。 所以問題是,當我運行同步功能時,conchShell視頻仍然會在我嘗試同步到它的視頻之前結束5到10幀。我認爲這是由於運行同步功能所花費的時間。即 - 視頻完全同步幾分之一秒,但在canv2被抓住之前,conchShell已經提前幾幀了。
所以問題是:是否有一個簡單的方法來弄清楚一個函數運行多少時間?因爲如果有的話,我可以在canv2上追加時間碼,我們是金手鐲。
UPDATE:
OK,我已經嘗試了一些其他的事情。我現在正在使用異步庫,並取得了一些成功。我唯一的問題是它在async.js的第505行上拋出一個「對象不是函數」錯誤。據我所知,這通常是丟失分號的錯誤。無論如何,這裏是我現在所擁有的現場版本。檢查出的代碼,如果你會這麼好心
http://staging.15four.com/videotest
我喜歡popcorn.js很多,但我有點滾動自己的,因爲我需要的功能也與閃回fallback一起工作。 奇怪的是,如果我做 函數syncToConchShell(){ 暫停(conchShell,canv2); canv2.currentTime(conchShell.currentTime()); console.log(arguments [i] +'與'+ conchShell同步); setTimeout(play(conchShell,canv2),1000); }' 它完全同步。所以我認爲1000毫秒等待允許currentTime();功能來完成操作。 – coulbourne
已更新的問題 – coulbourne