通过文件路径从本地服务器加载视频,而不是通过URL加载

时间:2011-03-22 16:06:34

标签: actionscript-3 actionscript

我正在编写一个基于Flash的视频播放器,只播放FLV视频。文件名通过flashvar传入。

目前,这是通过以下功能实现的:

function loadVideo():void {
    var myVideo:FLVPlayback = new FLVPlayback();
    myVideo.align = VideoAlign.CENTER;
    myVideo.autoPlay = false;
    myVideo.skin = root.loaderInfo.parameters.skin;
    myVideo.skinAutoHide = true;
    myVideo.skinBackgroundColor = 0x00749E;
    myVideo.source = videosDirectory + root.loaderInfo.parameters.filename;
    myVideo.width  = stage.stageWidth;   // make scalable!
    myVideo.height = stage.stageHeight;  // make scalable!
    myVideo.x = myVideo.y = 0;
    stage.addChild(myVideo);
}

抓取视频,然后将其添加到舞台上,并覆盖播放器皮肤。

但是,我想要做的是从文件系统(部署SWF的同一服务器)加载视频,而不是从URL获取视频。阅读source属性的文档告诉我它只接受URL。

我想从文件系统中读取的原因是因为这些视频将存储在服务器的根目录之外。例如,标准的Apache设置:

public_ftp/ 
public_html/ 
    assets/ 
        swf/ 
videos/ 

SWF将部署到/assets/swf/,但我想从/videos/目录中获取视频。

这可能吗?我是否必须使用除Flash FLVPlayback组件之外的替代解决方案?我不是一个有经验的Flash / ActionScript开发人员的标准,所以简单,愚蠢的答案会很好。

提前致谢。

2 个答案:

答案 0 :(得分:0)

除非您对其中一个文件具有HTTP或RTMP访问权限,否则无法进行此操作。

客户端下载swf,从swf发出的每个请求都必须从客户端获得。只要问问自己“是否允许浏览器访问此文件?”。

答案 1 :(得分:0)

您可以获取SWF的URL目录,然后附加文件名以创建绝对路径。

示例:

function getDirectory():String {    
    var url:String = this.loaderInfo.url;
    var urlPieces:Array = url.split("/");
    urlPieces.pop();
    urlPieces.push("");
    var directory:String = urlPieces.join("/");
    return directory;
}