複数のVimeo動画を連続再生し、秒数に応じてテロップ画像を横に表示する
動画の中で「こちらの表をご覧ください」といったケースで、表が良く見えない場合など、動画に合わせて表画像が表示されると便利です。もちろん動画編集で処理するのが最適ですが、動画とは別に表示されることの利点も多いかと思います。
先ずはサンプルです。
https://studio-key.com/Sample2/vimeo_telop/sample1.html
動画を3本連続再生し、その動画毎の再生時間に応じて画像が切り替わります。
考え方として「動画の再生時間を1秒ごとに取得し、その秒数に応じて画像を切替える」としました。今回は画像ですが、画像である必要はなくHTMLでもテキストでも可能です。
Vimeo動画を複数設定する
var videos = new Object(); videos[0] = "420863642"; videos[1] = "420863721"; videos[2] = "420863549";
再生したい動画のVimeoURIを配列で記述しておきます。
再生動画に対して画像をセットする
var Images = new Object();
Images[0] = {
5 : "02.jpg",
10 : "03.jpg",
15 : "04.jpg",
20 : "05.jpg",
};
Images[1] = {
8 : "01.jpg",
12 : "02.jpg",
19 : "03.jpg",
22 : "04.jpg",
25 : "05.jpg",
};
Images[2] = {
3 : "01.jpg",
10 : "02.jpg",
19 : "03.jpg",
22 : "04.jpg",
25 : "05.jpg",
};
Images[0]がvideos[0]の画像配列で、キーが秒数になります。つまり、動画1の5秒目に02.jpgに切り替える…というものです。あとは好きなように10秒目、15秒目とセットします。
動画を連続再生する
var vi=0;
player.on('ended', function(data) {
var loadVideo = $("#vimeoPlayer");
vi++;
if(videos[vi]){
player.loadVideo(videos[vi]).then(function(id) {
player.play();
});
}
});
playeyが終了した際にviを足し、次の動画があれば再生するという処理です。
動画の再生時間を取得して画像を表示する
setInterval(function(){
player.getCurrentTime().then(function(seconds){
var hms = "";
var h = seconds / 3600 | 0;
var m = seconds % 3600 / 60 | 0;
var s = Math.floor(seconds % 60);
if(Images[vi][s]){
$("#image").attr("src",'common/img/'+vi+'/'+Images[vi][s]);
}
if (h == 0) h="0";
if (m == 0) m="0";
hms = Zero(h) + ":" + Zero(m) + ":" + Zero(s) + "";
$("#timer").html(hms);
});
},1000);
player.getCurrentTime()で再生時間を得ることが出来ますので、setIntervalで1秒毎に再生時間を取得し、現在の再生時間を得ます。あとは秒数に応じて画像を切替えます。HTMLを別に定義しておけば文章を挿入することも可能です。




