1

私はアクション スクリプティングに非常に慣れていません。このFLVPlaybackクラスを使用して FLV ファイルを再生しています。

まだ存在しない FLV ファイルを再生しようとすると、「VideoError: 1000」というメッセージが表示されますUnable to make connection to server or to find FLV on server

FLVPlayback で FLV を再生する前に、ファイルの URL またはパスを使用して FLV ファイルの存在を確認したいと考えています。誰でもそれを行う方法を提案できますか。

ありがとう

4

2 に答える 2

3

エラーを安全にキャッチする唯一の方法は、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を参照してください。

于 2010-07-26T15:31:15.120 に答える
1

stateChangeイベントを利用できると思います。考えられるイベント タイプの 1 つはVideoState.CONNECTION_ERRORで、もう 1 つは VideoState.DISCONNECTED です。これも機能する可能性があります。

それを試してみてください。

それらが機能しない場合、私が考えることができる唯一の方法は、読み込もうとする前に flv に対して HEAD または GET リクエストを実行することです。正常な応答のみが、通常の方法でビデオの読み込みをトリガーします。Flash が HEAD リクエストをサポートしているかどうかは覚えていませんが、サポートしている場合は、その方が確実に優れたオプションになります。

Flash が HEAD リクエストをサポートしていない場合は、実際に if. そうすれば、ファイル全体を取得することなく、単純な GET 要求を使用できます。

インライン
思考 私が考えているのは、GET を使用した別の可能な解決策は、bytesLoaded > 1K (たとえば) またはそのようなものになったらすぐにロードをキャンセルすることです。取得している 404 応答よりも大きいサイズをチェックしている限り、flv が読み込まれていると想定できるはずです。

于 2010-07-26T14:49:01.353 に答える