【问题标题】:JWPlayer handle youtube errorsJWPlayer 处理 youtube 错误
【发布时间】:2013-06-02 09:13:01
【问题描述】:

我想处理 JWPlayer 中的 youtube 错误,所以如果视频不存在或该国家/地区不可用,请在播放器上显示消息,或者使用 javascript,我正在做这样的事情.. .

var options = {                             
                    height: 330,
                    },
                    flashplayer: '/player.swf',
                    width: 560,
                    events:{
                        onError:function(obj){
                            alert('ERROR'+obj);
                        }
                    }            ,
                        debug: 'console'
                };


 jwplayer("player").setup(options);
 jwplayer("player").play();          

但它没有从 onError 事件中进入,即使视频甚至不存在......我可以在控制台中看到.. LOG(加载预览图像时出错:错误 #2036)

在 youtube 限制国家/地区的情况下,我什至在控制台中都看不到。

无论如何,视频只是显示加载动画,它让用户相信它可以随时加载,这是不正确的。

 <html xmlns="http://www.w3.org/1999/xhtml"  
  xmlns:ui="http://java.sun.com/jsf/facelets">

        <script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/assets/jwplayer.min.js"></script>
        <script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/assets/swfobject.js"></script>

            <div id="player"></div>

            </body>
        <script type="text/javascript">  
            //<![CDATA[  

            window.onload=createPlayer();

            function createPlayer() {
                var flashvars = {
                    file:"http://www.youtube.com/watch?v=pnEHsUWFuNM", 
                    autostart:"true"
                }
                var params = {
                    allowfullscreen:"true", 
                    allowscriptaccess:"always"
                }
                var attributes = {
                    id:"player1",  
                    name:"player1"
                }
                swfobject.embedSWF("#{facesContext.externalContext.requestContextPath}/assets/player.swf", "player", "320", "196", "9.0.115", false, flashvars, params, attributes);
            }   
            function loadPlayer() {
                var options = { 
                    height: 325,
                    flashplayer: '#{facesContext.externalContext.requestContextPath}/assets/player.swf',
                    width: 560,
                    events:{
                        onError:function(error){
                            alert('Error loading your link, please try another one');
                        }
                    }       /*     ,
                            debug: 'console'*/
                };
                options.file = 'http://www.youtube.com/watch?v=pnEHsUWFuNM';                    
                options.events.onReady= function(){      

                    jwplayer("player").play();

                };

                jwplayer("player").setup(options);
            }
            //]]>
        </script>                

loadPlayer 尝试使用 jwplayer.js 和直接来自 SWFObject 的 createPlayer...该视频的存在只是它不应该在德国显示,仍在尝试加载它。 如果我设置任何其他不存在的 URL,请说“http://www.youtube.com/watch?v=ABC”仍然会继续尝试加载不存在的视频。

【问题讨论】:

  • 你有运行这个的链接吗?
  • 我有一个链接,但还不能用于外部访问...它有可能在不访问的情况下解释这种行为吗?或者你知道它在过去发生过?
  • 我之前没见过这个问题,所以我很想调试一下为什么会这样。
  • 确保您使用的是最新版本的 JW5,顺便说一句,5.10。同样对于 JW5,API 参考在这里 - longtailvideo.com/support/jw5/31164/javascript-api-reference
  • 是的,我有 5.8 版,刚刚更新但仍然是同样的问题,我可以在使用 swfObject 时收到错误回调,但当我使用 Jwplayer 的设置时却没有,我需要插件和一些其他事情

标签: javascript youtube jwplayer


【解决方案1】:

JW5 似乎不支持捕获 YouTube 错误。但是,以下 JW6 设置有效:

<!DOCTYPE html>
<html>
<head>
<title>YouTube Test Page</title>
<script type="text/javascript" src="http://www.longtailvideo.com/jwplayer/jwplayer.js"></script>
</head>
<body>
<div id="player"></div>
<script type="text/javascript">
    jwplayer("player").setup({
      file: "https://www.youtube.com/watch?v=ABCD",
      events:{
            onError: function() {
                jwplayer().load({file: "http://content.longtailvideo.com/videos/flvplayer.flv",duration: "27"});jwplayer().play()
                }
            }
      });
</script>
</body>
</html>

【讨论】:

  • 谢谢!!现在我知道这是不可能的,在第 5 版中,我将尝试解决方法,因为我还不能更改为第 6 版,我将不得不重新编写用于该版本的插件
  • 没问题,随时!
  • 是的,我注意到错误代码始终为 0!所以它没有在 onPlayerError 中设置任何错误消息。解决方案是在出现任何错误时在交换机中创建默认值。尽管我们无法区分它们,但至少我们知道发生了错误
  • 是的,你可以这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多