1

わかりましたので、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 行目で「オブジェクトは関数ではありません」というエラーがスローされることです。私の知る限り、これは通常、セミコロンがないためにスローされるエラーです。

とにかく、これは私が今持っているもののライブバージョンです。よろしければコードをチェックしてください

http://staging.15four.com/videotest

4

1 に答える 1