[英]AS3 NetStream not indicating end of video
我正在嵌入一個FLV文件,並通過NetStream.appendBytes()
函數進行播放。 該視頻可以正常播放,但是我無法確定視頻何時結束播放。
根據此頁面 ,我應該從下面的statusHandler
函數中打印出狀態為NetStream.Play.Start
, NetStream.Buffer.Empty
, NetStream.Buffer.Full
, NetStream.Buffer.Flush
和NetStream.Play.Stop
事件。
根據對頁面的理解,應該從附加到ns.client.onPlayStatus
匿名函數中打印出NetStream.Play.Complete
。
我的輸出完全包含以下內容:
[trace] NetStatus: NetStream.Buffer.Full
[trace] NetStatus: NetStream.Buffer.Empty
視頻開始播放時為“ Full
,播放完畢時為“ Empty
。
我想啟動NetStream.Play.Stop
或NetStream.Play.Complete
。 這是我的代碼,我做錯了什么?
package {
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.utils.ByteArray;
public class Movie extends Sprite {
[Embed(source="video.flv", mimeType="application/octet-stream")]
private static const testFLV:Class;
public function Movie():void {
var video:Video = new Video(400, 300);
addChildAt(video, 0);
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
var myClient:Object = new Object();
ns.client = myClient;
ns.client.onPlayStatus = function(info:Object):void {
trace("onPlayStatus: " + info.code);
};
ns.client.onStatus = function(info:Object):void {
trace("onStatus: " + info.code);
};
video.attachNetStream(ns);
var vidBytes:ByteArray = new testFLV();
ns.play(null);
ns.appendBytes(vidBytes);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
}
private function statusHandler(event:NetStatusEvent):void {
trace("NetStatus: " + event.info.code);
}
}
}
創建一個名為Client ..的內部類。
internal class Client
{
public function onPlayStatus(info:Object):void
{
trace(info.code) // you should be able to catch the ( NetStream.Play.Complete)
}
public function onMetaData(info:Object):void
{
}
}
然后像這樣分配netstream對象的client屬性...
ns.client = new Client;
希望能奏效。 在原則上應該如此。 NetStream類是一個密封的類,因此不能在運行時向其添加屬性或方法...如果需要,請對其進行子類化並在該類中定義實例級別的方法/屬性。
根據我的理解,嵌入FLV文件並使用NetStream.appendBytes與所謂的“ HTTP流”相同。
我是從“ 監視NetStream活動 ”頁面獲得的,其中說:
我還從其他論壇上學習到有人將NetStream.Buffer.Empty用作完整事件。 但是我認為這還意味着可能需要低帶寬的隱式暫停。 我找不到區分的好方法。
希望這可以幫助。 如有任何更新,將非常高興。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.