我制作了一个flash视频点唱机,因此它会在几个小时内读取F4V文件的动态播放列表。 一切都运作良好,但大约45分钟后声音停止,2小时后,Flash播放器插入崩溃。 看起来缓存不接受更多F4V视频然后崩溃。如果我每2小时自动刷新浏览器它可以工作,但我想避免刷新浏览器,只是清除闪存播放器缓存,如果这是F4V去的地方? 我找不到任何有关F4V文件播放时的信息!
第1帧为变量vidReference
提供视频文件名的值:
VidReference = trackToPlay;
第2帧进行播放:
var nc:NetConnection = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
const buffer_time:Number = 2;
ns.bufferTime = buffer_time;
ns.client = this;
ns.play(VidReference);
var vid:Video = new Video();
vid.attachNetStream(ns);
addChild(vid);
vid_frame.addChild(vid);
此功能可检测视频何时播放,仍然在第2帧:
function netStatusHandler(event:NetStatusEvent):void
{
switch (event.info.code)
{
case "NetStream.Play.StreamNotFound": newTrack();
break;
case "NetStream.Play.Stop": newTrack();
break;
}
}
函数newTrack()
只是给变量trackToPlay
一个值(下一个视频的文件名)。然后对gotoAndPlay
第1帧说,所以它有点重新初始化玩家。对象在第2帧中重新声明,这是问题吗?
大卫
答案 0 :(得分:1)
听起来像是内存不足。你是否正在清理旧的f4v,以便你永远不会只是不断要求记忆?
尝试对其进行分析,或使用类似http://jpauclair.net/flashpreloadprofiler/
的内容有关跟踪记忆问题的帮助,请查看http://divillysausages.com/blog/tracking_memory_leaks_in_as3(无耻的自我推销)
答案 1 :(得分:0)
它不是缓存问题。缓存在硬盘驱动器上分配空间,因此如果没有填满,则不会出现问题 这听起来像你不是垃圾收集而不是正确地重复使用视频对象。 发布一些代码,以便我们解决它