AS3浏览并加载视频

时间:2015-08-05 11:01:57

标签: actionscript-3 air

我目前正致力于AS3 AIR项目,该项目允许用户浏览视频文件并将同一视频加载到舞台上。我设法允许用户浏览视频文件类型,并根据我的踪迹完成加载视频,但这是我所拥有的。有很多教程涉及如何从本地源或外部链接加载视频文件,但没有任何内容可以告诉我如何处理浏览文件以在舞台上显示它。以下是目前浏览视频文件的代码:

private function browseVideo():void {
    fileReference = new FileReference();
    fileReference.addEventListener(Event.SELECT, videoFileSelected);

    var videoTypeFilter:FileFilter = new FileFilter("Video files", "*.3g2; *.3gp; *.asf; *.asx; *.avi; *.flv; *.m4v; *.mov; *.mp4; *.mpg; *.rm; *.swf; *.vob; *.wmv;");

    fileReference.browse([videoTypeFilter]);
}

private function videoFileSelected(e:Event):void {
    fileReference.addEventListener(Event.COMPLETE, onVideoFileLoaded);
    fileReference.addEventListener(IOErrorEvent.IO_ERROR, onVideoFileLoadError);
    fileReference.load();
}

function onVideoFileLoaded(e:Event):void {
    var fileReferenceTarget:FileReference = e.target as FileReference;

    var data:ByteArray = fileReferenceTarget["data"];

    fileReference.removeEventListener(Event.COMPLETE, onVideoFileLoaded);
    fileReference.removeEventListener(IOErrorEvent.IO_ERROR, onVideoFileLoadError);

    var videoLoader:Loader = new Loader();
    videoLoader.loadBytes(data);
    videoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onVideoLoaderComplete);

    trace("video file loaded");
}

function onVideoFileLoadError(e:Event):void {
    fileReference.removeEventListener(Event.COMPLETE, onVideoFileLoaded);
    fileReference.removeEventListener(IOErrorEvent.IO_ERROR, onVideoFileLoadError);

    trace("video file load failed");
}

function onVideoLoaderComplete(e:Event):void {
    var loadedContent:DisplayObject = e.target.content;
    var loader:Loader = e.target.loader as Loader;

    scope.addChild(loader);
}

1 个答案:

答案 0 :(得分:2)

要使用AS3(Flash)播放视频,您可以使用可以附加Video对象的NetStream对象,也可以使用FLVPlayback组件。对于flex,请查看my answer of this question,其中我举了一个播放视频流的示例。在所有情况下,我认为您不需要FileReference对象,因为File足以获取本地文件的路径,然后以您想要的任何方式播放它。

看看这个例子:

function browseVideo():void {
    var file:File = new File();
        file.addEventListener(Event.SELECT, videoFileSelected); 
        file.browse([videoTypeFilter]);
}

function videoFileSelected(e:Event):void {
    playVideo(e.currentTarget.nativePath);
}

function playVideo(video_path:String){

    // using a Video + NetStream object
    var nc:NetConnection = new NetConnection();
        nc.connect(null);
    var ns:NetStream = new NetStream(nc);
        ns.client = this;
    var video:Video = new Video();
        video.attachNetStream(ns);
        addChild(video);
    ns.play(video_path);

    // using an FLVPlayback component inserted on the Stage
    flvplayback.load(video_path);
    flvplayback.play();

}

有关如何使用视频的详细信息,您可以查看here,您可以找到有关视频的所有信息(加载视频,支持的格式,提示点......)。

希望可以提供帮助。