YouTube Player API:如何在不播放的情况下获取加载/提示视频的持续时间? [英] YouTube Player API: How to get duration of a loaded/cued video without playing it?
问题描述
我无法通过 YouTube 播放器 API 的 getDuration() 方法获取加载/提示视频的正确视频时长/长度(以秒为单位);但是,相同的方法会在视频开始播放后返回一个有效值!想知道 YouTube 如何能够显示加载/提示视频的有效时长.
当我用 15 秒的视频剪辑加载此 HTML 页面时,我得到以下调试输出:
状态 = 5 持续时间 = -0.000025
当我点击播放按钮时,我得到以下调试输出:
状态 = 3 持续时间 = 15,
非常感谢解决方案或变通方法.加载、立即播放和暂停播放器不是我最喜欢的方法.
<头><script type="text/javascript">var videoId;videoId = 'http://www.youtube.com/v/4TSJhIZmL0A';//英国广播公司//videoId = 'http://www.youtube.com/v/ezwyHNs_W_A';//物理函数 $(id) {返回 document.getElementById(id);}<script src="http://www.google.com/jsapi"></script><脚本>google.load("swfobject", "2.1");头部><身体><表格><tr><td><div id="玩家">您需要启用 Flash 播放器 8+ 和 JavaScript 才能观看此视频.
<脚本>var ytplayer;函数 myOnPlayerStateChange(state) {开关(状态){case 1://播放$("out").innerHTML += "正在播放";休息;case 2://暂停$("out").innerHTML += "暂停";休息;case 0://结束$("out").innerHTML += "已结束";休息;case -1://未启动case 3://缓冲case 5://提示$("out").innerHTML += " state = " + state;休息;默认值://未知$("out").innerHTML += " state = " + state;休息;}$("out").innerHTML += " duration = " + ytplayer.getDuration() + ",";}函数 myOnPlayerError(errorCode) {$("out").innerHTML += " 发生错误:" + errorCode;}功能 onYouTubePlayerReady(playerId) {ytplayer = ytplayer ||$(玩家ID);ytplayer.addEventListener("onStateChange", "myOnPlayerStateChange");ytplayer.addEventListener("onError", "myOnPlayerError");}var params = { allowScriptAccess: "always", bgcolor: "#cccccc" };var atts = { };swfobject.embedSWF(videoId + "?border=0&enablejsapi=1&playerapiid=" + 'player', 'player', 425, 344, "8", null, null, params, atts);</td></tr><div id="out"></div><div id="错误"></div>