我嵌入了一个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);
}
}
}发布于 2014-08-16 03:40:03
创建一个名为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类是一个密封的类,因此不能在运行时向其添加属性或方法...如果需要,则将其子类化,并在该类中定义实例级方法/属性。
发布于 2015-03-10 14:55:02
根据我的理解,嵌入FLV文件和使用NetStream.appendBytes与所谓的"HTTP流“是相同的方式。
我从Monitoring NetStream Activity页面上得到了这个,上面写着:
我还从其他论坛了解到,有人将使用NetStream.Buffer.Empty作为完整的事件。但我认为这也意味着隐含的缓冲暂停,可能是因为低带宽。我找不到一种好的方法来区分。
希望这能有所帮助。如果你有更新的话,那就太好了。
https://stackoverflow.com/questions/25314262
复制相似问题