如何在Flash中嵌入FLV并使用AS3播放?

4

我想创建一个包含多个视频的iPad应用程序。所有视频必须嵌入Flash中,因此不能使用流媒体。我可以在时间轴上嵌入FLV并以这种方式播放它,但是否有其他方法可以使用Actionscript引用库中的视频对象或使用AS中的嵌入标签来控制播放 - 这样我就能获得更多的控制和访问提示点。

1个回答

9

您需要嵌入文件并附加NetStream字节:

[Embed(source = "movie.flv", mimeType = "application/octet-stream")]
public var bytes:Class;

public var video:Video = new Video(640, 480);

public function Main():void {

    addChild(video);

    var nc:NetConnection = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS , onConnect);
    nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR , trace);


    var metaSniffer:Object=new Object();  
    nc.client=metaSniffer;
    metaSniffer.onMetaData=getMeta;
    nc.connect(null);
}

private function getMeta (mdata:Object):void {
    video.width=mdata.width/2;
    video.height=mdata.height/2;
};

private function onConnect(e:NetStatusEvent):void {
    if (e.info.code == 'NetConnection.Connect.Success') {
        trace(e.target as NetConnection);
        var ns:NetStream = new NetStream(e.target as NetConnection);

        ns.client = {};
        var file:ByteArray = new bytes();
        ns.play(null);

        ns.appendBytes(file);
        video.attachNetStream(ns);
    }

}

有没有办法通过这种方法知道视频何时播放完成?我不再收到“NetStream.Play.Stop” NetStatusEvent。 - Scott
没有测试过,但是如果您从元数据中获取视频长度并检查位置,如果没有事件被触发,总是有解决方法的。 - turbosqel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接