代码之家  ›  专栏  ›  技术社区  ›  Siva

在使用动作脚本3中的FLVPlayback播放之前,如何检查FLV文件是否存在?

  •  1
  • Siva  · 技术社区  · 15 年前

    我对动作脚本非常陌生,我正在使用 FLVPlayback 类来播放我的FLV文件。

    如果我试图播放一个还不存在的FLV文件,那么我会收到一个“VideoError:1000”的消息 Unable to make connection to server or to find FLV on server .

    在FLVPlayback播放FLV之前,我想使用文件URL或路径检查FLV文件是否存在。谁能给我一个建议吗。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Rudisimo    15 年前

    安全地捕捉错误的唯一方法是监听错误 fl.video.VideoEvent.STATE_CHANGE

    import fl.video.FLVPlayback;
    import fl.video.VideoEvent;
    import fl.video.VideoState;
    
    var videoPlayer:FLVPlayback;
    videoPlayer.addEventListener( VideoEvent.STATE_CHANGE, onVideoStateChange );
    /** Bad source  **/
    videoPlayer.source = "http://www.helpexamples.com/flash/video/caption_video_error.flv";
    /** Good source **/
    //videoPlayer.source = "http://www.helpexamples.com/flash/video/caption_video.flv";
    
    function onVideoStateChange( evt:VideoEvent ):void
    {
        var videoPlayer:FLVPlayback = evt.target as FLVPlayback;
        switch( evt.state )
        {
            case VideoState.CONNECTION_ERROR:
                trace( 'Connection error' );
                /**
                 * Once you hit this event, you should run some logic to do one or more of the following:
                 *   1. Show an error message to the user
                 *   2. Try to load another video
                 *   3. Hide the FLVPlayback component
                 */
                break;
            default:
                trace( 'Player is: ' + evt.state );
        }
    }
    

    有关可能的VideoState常量的完整列表,请访问 fl.video.VideoState .

        2
  •  1
  •   sberry    15 年前

    stateChange 事件。可能的事件类型之一是 VideoState.CONNECTION_ERROR

    试试看。

    如果这些都不起作用,我能想到的唯一方法是要么做一个头部或获得请求的flv之前,你试图加载它。只有成功的响应才会触发通过正常方法加载视频。我不记得Flash是否支持HEAD请求,但如果它支持,那肯定是更好的选择。

    如果Flash不支持HEAD请求,那么最好使用一个简单的服务器端脚本,在实际请求If之前验证flv的存在。这样就可以使用简单的GET请求,而不必检索整个文件。

    内联思维