我目前正在使用 video.js 来处理来自 html5 视频的 flash 回退。当用户单击我网站上的缩略图时,我会动态地(使用 js/jquery)创建所需的 html 并将其插入到 jquery ui 对话窗口中,然后使用 html5 或 flash 回退显示视频。以下是相关代码:
//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 中,我在第二遍时收到“未找到支持的 mime 类型的视频”错误。chrome 和 safari 在第二遍加载和播放视频;但这样做使用他们的默认 html5 播放器而不是 video.js 播放器。
我认为我的问题是 video.js 必须使用唯一的视频标签 id 进行初始化,并且当用户第二次单击视频缩略图时,我的代码会尝试使用它已经使用过的视频标签 id 来初始化播放器。
有谁知道避免这个问题的干净方法?
在此先感谢您的帮助。