私は過去にLimeLightサーバーを使用してビデオをストリーミングするクライアント用のプレーヤーを作成しましたが、以前は問題がありませんでしたが、別のLimeLightサーバーを使用する新しいクライアントの場合、ビデオの終了が3〜4秒早すぎるようです。
私がテストした3つの大きく異なるビデオの私のトレース:
metadata duration = 32 // 32 secs long, ends at 27
Stop [27.350 seconds] = 4.65
metadata duration = 17 // 17 secs long, ends at 12
Stop [12.852 seconds] = 4.148
metadata duration = 258 // 258 secs long, ends at 255
Stop [255.861 seconds]
ビデオプレーヤーでは、チェックしてNetStream.Play.Stop
から「リセット」タイプの関数をそこに配置します。ただし、この奇妙なバグが原因で、この関数のトリガーが早すぎます。誰かがこれを見たことがありますか?
private function netStatusHandler(event:NetStatusEvent):void
{
trace("connected is: " + nc.connected );
switch (event.info.code)
{
case "NetConnection.Connect.Success":
trace("Connected");
connectStream();
break;
case "NetStream.Play.Start":
trace("********** Start [" + ns.time.toFixed(3) + " seconds]");
break;
case "NetStream.Play.Stop":
trace("‹ ----------- Playback has stopped. ----------- ›");
trace("Stop [" + ns.time.toFixed(3) + " seconds]");
if (nsBuffering){ removeChild(bufferAni); }
nsBuffering = false;
videoStatus = "NotPlaying";
resetVideo(); //<- Video ends so go back to start
// ^ This triggers too early
break;
}
}
これに対する唯一の回避策は、メタデータ期間から取得した初期数を保存し、タイマーを実行して現在のns.timeがメタデータと一致するかどうかを常に確認してから、リセット機能を実行することです。