【发布时间】:2014-08-14 17:40:35
【问题描述】:
我正在嵌入一个 FLV 文件,并通过 NetStream.appendBytes() 函数播放它。视频播放正常,但我无法确定视频何时播放完毕。
根据this page,我应该从下面的statusHandler 函数中打印出状态为NetStream.Play.Start、NetStream.Buffer.Empty、NetStream.Buffer.Full、NetStream.Buffer.Flush 和NetStream.Play.Stop 的事件。
根据我对this page 的理解,我应该从附加到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);
}
}
}
【问题讨论】:
-
为什么是-1?我已经解释了我在做什么,我期望的输出与我得到的输出,并且我提供了一个 SSCCE。我应该如何以不同的方式提出这个问题?
标签: actionscript-3 video