現在、video.js を使用して、html5 ビデオからのフラッシュ フォールバックを処理しています。ユーザーがサイトのサムネイルをクリックすると、動的に (js/jquery を使用して) 必要な html を作成して jquery ui ダイアログ ウィンドウに挿入し、html5 またはフラッシュ フォールバックを使用してビデオを表示します。関連するコードは次のとおりです。
//setup jquery ui dialog window
$( "div#video_box" ).dialog({
autoOpen: false,
modal: true,
width: 'auto',
resizable: false,
draggable: true,
close: function() {
$("video").remove()
}
});
//the following code runs after a video thumbnail click event.
{
var $videoBox = $("div#video_box"),
url = VIDEOSTORAGE + id , //url to s3 storage bucket + id of the video/thumbnail that was clicked
html ="";
html += "<video id='downloadedVideo_"+id+"' class='video-js vjs-default-skin' width='320' height='240' controls preload='auto' width='640' height='264' poster='"+PHOTOSTORAGEMEDIUM + id'>";
html += "<source src='"+url+".mp4' type='video/mp4' />";
html += "</video>";
$videoBox.html(html);
$("#downloadedVideo_"+id).load();
$videoBox.dialog( "open" );
_V_("downloadedVideo_"+id); //initialize video player
}
このコードは、動画のサムネイルが最初にクリックされたときに、すべてのブラウザーで完全に機能します。ユーザーが既に視聴したビデオのビデオ サムネイルをクリックすると、私のバグがトリガーされます。
FF では、2 回目のパスで「サポートされている MIME タイプのビデオが見つかりません」というエラーが表示されます。chrome と safari の両方が、2 回目のパスでビデオを読み込んで再生します。ただし、video.js プレーヤーではなく、デフォルトの html5 プレーヤーを使用してください。
私の問題は、一意のビデオ タグ ID を使用して video.js を初期化する必要があることだと思います。ユーザーがビデオのサムネイルを 2 回目にクリックすると、コードは既に使用されているビデオ タグ ID でプレーヤーを初期化しようとします。
この問題を回避するためのクリーンな方法を知っている人はいますか?
よろしくお願いします。