动态播放外部FLV 文件和预加载 FLV 文件

 

/*****************

wgscd (c)2005 ' qq:153964481 e-mail:wgscd@126.com  blog:http://blog.youkuaiyun.com/wgsnet

www.lie78.com

/******************************************

动态播放外部 FLV 文件

您可以在运行时加载 FLV 文件,并在 SWF 文件中播放。可以将这些文件加载到视频对象或诸如 FLVPlayback 之类的组件中。下面的示例演示如何在视频对象中播放名为 clouds.flv 的文件。

在 Flash 文档中回放外部 FLV 文件:
  1. 创建一个名为 playFLV.fla 的新 Flash 文档。
  2. 在“库”面板(“窗口”>“库”)中,从“库”弹出菜单中选择“新建视频”。
  3. 在“视频属性”对话框中,命名视频元件并选择“视频”(受 ActionScript 控制)。
  4. 单击“确定”以创建一个视频对象。
  5. 将该视频对象从“库”面板拖到舞台上,以创建视频对象实例。
  6. 使视频对象在舞台上保持选中状态,在“属性”检查器(“窗口”>“属性”>“属性”)中的“实例名称”文本框中键入 my_video
  7. 在时间轴中选择第 1 帧,然后打开“动作”面板(“窗口”>“动作”)。
  8. 在“动作”面板中键入以下代码:
  9.  

 

this.createTextField("status_txt", 999, 0, 0, 100, 100);
status_txt.autoSize = "left";
status_txt.multiline = true;
// 创建一个 NetConnection 对象
var my_nc:NetConnection = new NetConnection();
// 创建一个本地流连接
my_nc.connect(null);
// 创建一个 NetStream 对象并定义一个 onStatus() 函数
var my_ns:NetStream = new NetStream(my_nc);
my_ns.onStatus = function(infoObject:Object):Void {
    status_txt.text += "status (" + this.time + " seconds)/n";
    status_txt.text += "/t Level: " + infoObject.level + "/n";
    status_txt.text += "/t Code: " + infoObject.code + "/n/n";
};
// 将 NetStream 视频输入信号附加到 Video 对象
my_video.attachVideo(my_ns);
// 设置缓冲时间
my_ns.setBufferTime(5);
// 开始播放 FLV 文件
my_ns.play("http://www.helpexamples.com/flash/video/clouds.flv");
 
 
 

 

  1. 选择“控制”>“测试影片”来测试该文档。

有关预加载 FLV 文件的信息,请参阅第 507 页上的“预加载 FLV 文件”。有关将 FLV 视频动态加载到组件中的信息,请参阅《组件语言参考》。有关 FLV 文件和服务器、FLV 文件以及在 Macintosh 上本地播放 FLV 文件的信息,请参阅

预加载 FLV 文件

若要跟踪 FLV 文件的下载进度,请使用 NetStream.bytesLoadedNetStream.bytesTotal 属性。若要获取 FLV 文件的总字节数和当前下载的字节数,请使用 NetStream.bytesLoadedNetStream.bytesTotal 属性。

下面的示例使用 bytesLoadedbytesTotal 属性显示将 video1.flv 加载到名为 my_video 的视频对象实例中的进度。将动态创建一个名为 loaded_txt 的文本字段,以便显示有关加载进度的信息。

预加载 FLV 文件:
  1. 创建一个名为 preloadFLV.fla 的新 FLA 文件。
  2. 在“库”面板(“窗口”>“库”)中,从“库”弹出菜单中选择“新建视频”。
  3. 在“视频属性”对话框中,命名视频元件并选择“视频”(受 ActionScript 控制)。
  4. 单击“确定”以创建一个视频对象。
  5. 将该视频对象从“库”面板拖到舞台上,以创建视频对象实例。
  6. 使视频对象在舞台上保持选中状态,在“属性”检查器(“窗口”>“属性”>“属性”)中的“实例名称”文本框中键入 my_video
  7. 使视频实例保持选中状态,然后在“属性”检查器的宽度文本框中键入 320,在高度文本框中键入 213
  8. 在时间轴中选择第 1 帧,然后打开“动作”面板(“窗口” > “动作”)。

在“动作”面板中键入以下代码:

 
var connection_nc:NetConnection = new NetConnection();
connection_nc.connect(null);
var stream_ns:NetStream = new NetStream(connection_nc);
my_video.attachVideo(stream_ns);
stream_ns.play("http://www.helpexamples.com/flash/video/lights_short.flv");
this.createTextField("loaded_txt", this.getNextHighestDepth(), 10, 10, 160, 22);
var loaded_interval:Number = setInterval(checkBytesLoaded, 500, stream_ns);
function checkBytesLoaded(my_ns:NetStream) {
    var pctLoaded:Number = Math.round(my_ns.bytesLoaded / my_ns.bytesTotal * 100);
    loaded_txt.text = Math.round(my_ns.bytesLoaded / 1000) + " of " + Math.round(my_ns.bytesTotal / 1000) + " KB loaded (" + pctLoaded + "%)";
    progressBar_mc.bar_mc._xscale = pctLoaded;
    if (pctLoaded >= 100) {
        clearInterval(loaded_interval);
    }
}
 
 

  1. 选择“控制”>“测试影片”,对代码进行测试。

    注意

     

    如果进度条立刻走完,则表明视频被缓存到了硬盘上(可能是早已测试过此示例,也可能在其它过程中早已加载了它)。如果发生这种情况,请将 FLV 文件上载到服务器,然后再加载。

预加载 FLV 文件的另一种途径是使用 NetStream.setBufferTime() 方法。此方法采用单个参数,该参数指示回放开始前 FLV 流缓冲的秒数。有关详细信息,请参阅《ActionScript 2.0 语言参考》中的 setBufferTime(NetStream.setBufferTime 方法)getBytesLoaded(MovieClip.getBytesLoaded 方法)getBytesTotal(MovieClip.getBytesTotal 方法)bytesLoaded(NetStream.bytesLoaded 属性)bytesTotal(NetStream.bytesTotal 属性)setInterval 函数

例子:

 

<script language="JavaScript1.2" type="text/javascript"> </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值