私は一日中この答えを探しましたが、答えよりも多くの質問を見つけました。
外部ソースを介してビデオ ファイル (およびその他の多くのもの) を読み込む .exe フルスクリーン フラッシュ アプリがあります。ビデオが再生されると、しばしば途切れて再生が停止することを除いて、すべてが正常にリンクします. 再生が停止する場所はランダムです。2 秒未満の場合もあれば、30 秒続く場合もありますが、ビデオの 58 秒を完全に再生したことはありません。
合計にロードされたバイト数を追跡したところ、それらは一致しました (これはローカルで参照されたファイルであり、Web ではありません)。
これがコードです。これを行うためのより良い方法 (クラスを使用しない方法) があれば、助けてください。
function loadCaseVideo(sourceVideo:String):void {
//sourceVideo = reference link from XML data
if(!videoLoadedAlready){
var videoLoadedAlready:Boolean;
}
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
var mNetConnection:NetConnection=new NetConnection();
mNetConnection.connect(null);
var mNetStream = new NetStream(mNetConnection);
var video = new Video();
video.width = 728;
video.height = 522;
video.y = 0;
video.x = 0;
video.attachNetStream(mNetStream);
videoHolder.videoInner.addChild(video);
mNetStream.client=new Object();
mNetStream.bufferTime=60;
mNetStream.play(sourceVideo);
mNetStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStreamStatusEvent);
function onNetStreamStatusEvent(event:NetStatusEvent):void
{
trace(event.info.code);
if (event.info.code == "NetStream.Play.Start")
{
//trace("NetStream.Play.Start");
//trace(mNetStream.bytesLoaded +", " + mNetStream.bytesTotal);
}
if (event.info.code == "NetStream.Play.StreamNotFound")
{
//trace("Video Not Found");
}
if (event.info.code == "NetStream.Buffer.Flush")
{
//I saw this being called so I ran a trace on it, these two are equal, meaning fully loaded?
trace('loaded: '+ mNetStream.bytesLoaded +", total: " + mNetStream.bytesTotal);
}
}
function onMetaData(metadata:Object):void
{
}
}