【问题标题】:Flash / ActionScript 3: Load .FLV file into a MovieClip and start playing that FLV fileFlash / ActionScript 3:将 .FLV 文件加载到 MovieClip 并开始播放该 FLV 文件
【发布时间】:2010-11-06 13:15:24
【问题描述】:

如何将 FLV 文件加载到 MovieClip(让我们调用实例“flvPlaceHolder”)并使用 ActionScript 3 开始播放该 FLV 文件?

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:
    var flvPlaceHolder:MovieClip = new MovieClip();    
    
    var vid:Video = new Video(320, 240);
    flvPlaceHolder.addChild(vid);
    addChild(flvPlaceHolder);
    flvPlaceHolder.x = stage.stageWidth/2-vid.width/2;
    flvPlaceHolder.y = stage.stageHeight/2-vid.height/2;
    
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    
    var ns:NetStream = new NetStream(nc);
    vid.attachNetStream(ns);
    
    var listener:Object = new Object();
    listener.onMetaData = function(evt:Object):void {};
    ns.client = listener;
    
    ns.play("mario.flv");
    

    【讨论】:

      【解决方案2】:

      要在本地执行此操作 - 将以下代码剪切并粘贴到 Flash 文件的第一帧中。最后当然要改名字。

      stage.displayState = StageDisplayState.FULL_SCREEN; 
      
      var connection:NetConnection = new NetConnection();
      var stream:NetStream;
      var video:Video = new Video(1280,960);
      var metaObj:Object = new Object();
      
      function onMetaData(data:Object):void
      {
      
      }
      
      connection.connect(null);
      stream = new NetStream(connection);
      stream.client = metaObj;
      metaObj.onMetaData = onMetaData;
      video.attachNetStream(stream);
      addChild(video);
      stream.play("name_of_flv.flv");
      video.x = 0;
      video.y = 0;
      

      【讨论】:

        【解决方案3】:
        var video:Video = new Video();
        addChild(video);
        
        var nc:NetConnection = new NetConnection();
        nc.connect(null);
        
        var ns:NetStream = new NetStream(nc);
        ns.client = {};
        ns.client.onMetaData = ns_onMetaData;
        ns.client.onCuePoint = ns_onCuePoint;
        ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
        
        video.attachNetStream(ns);
        
        function ns_onMetaData(item:Object):void {
            trace("metaData");
            // Resize video instance.
            video.width = item.width;
            video.height = item.height;
            // Center video instance on Stage.
            video.x = (stage.stageWidth - video.width) / 2;
            video.y = (stage.stageHeight - video.height) / 2;
        }
        
        function ns_onCuePoint(item:Object):void {
            trace("cuePoint");
            trace(item.name + "\t" + item.time);
        }
        

        【讨论】:

          【解决方案4】:

          正如 subha 所指出的,它是使用 NetStream 类完成的……但是,该类尤其难以使用,并且与语言的其余部分非常不连贯……

          我强烈建议您使用一些库、类或组件来包装它。 Flash 中的 FLVPlayback 组件(没有任何皮肤)与 Flash 中的所有其他内置组件相比,非常简单易用;)

          【讨论】:

            【解决方案5】:

            没有明确回答您的问题,但有许多开源 FLV 播放器在野外。我会通过抓取其中一个并查看它们如何处理播放视频来解决问题。

            FPlayer 将是一个很好的起点。 Here is the class 正在做这项工作。这很简单,但使用这样的项目可能会为您节省一些时间。

            这个 sn-p 应该以一种非常简单的方式来解决问题:

            var vid:Video = new Video(320, 240);
            addChild(vid);
            
            var nc:NetConnection = new NetConnection();
            nc.connect(null);
            
            var ns:NetStream = new NetStream(nc);
            vid.attachNetStream(ns);
            
            var listener:Object = new Object();
            listener.onMetaData = function(evt:Object):void {};
            ns.client = listener;
            
            ns.play("externalVideo.flv");
            

            from here

            【讨论】:

            • 谢谢。但是..是的..并没有真正回答我的问题:)
            猜你喜欢
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-10
            • 1970-01-01
            相关资源
            最近更新 更多