わかりましたので、2 つの video.js プレーヤー (canv1 と canv2) があり、それぞれが同じビデオのコピーを再生しています。canv1 の特定のタイムコードで canv2 を一時停止し、その後 canv1 のタイムコードで canv2 を canv1 と同期させて再生したいと考えています。
目標は、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 は、他のプレーヤーが同期するマスター タイムラインを持つプレーヤーです。問題は、同期機能を実行すると、同期しようとしているビデオよりも 5 ~ 10 フレーム先に conchShell ビデオが終了することです。これは、同期機能の実行に時間がかかるためだと思います。つまり、ビデオは一瞬完全に同期していましたが、canv2 が追いつく前に、conchShell はすでに数フレーム進んでいます。
質問は次のとおりです。関数の実行にかかった時間を把握する簡単な方法はありますか? もしあれば、canv2 のタイムコードにその時間を追加することができ、私たちはゴールデンです。
アップデート:
わかりました、私はいくつかの他のことを試しました。私は現在非同期ライブラリを使用しており、もう少し成功しています。私の唯一の問題は、async.js の 505 行目で「オブジェクトは関数ではありません」というエラーがスローされることです。私の知る限り、これは通常、セミコロンがないためにスローされるエラーです。
とにかく、これは私が今持っているもののライブバージョンです。よろしければコードをチェックしてください