Actionscript 3 Actionscript 3 NetStream立即暂停未获取元数据
我正在用FlashCS5和ActionScript3编写一个基本的视频播放器。对于这个基本播放器,我将NetStream连接到NetConnection,然后调用流的.play()方法开始加载。虽然我希望元数据和流开始缓冲,但我不希望立即开始播放,因此我立即调用流的.pause()方法。不幸的是,当我立即暂停时,我的流的客户端的onMetaData事件并不总是被调用,因此我不一定得到加载视频的总播放时间 作为一种解决方法,我将对“pause”方法的调用放在onMetaData侦听器中,但有时我的视频在接收元数据之前会播放一点,因此会继续播放,直到收到元数据为止Actionscript 3 Actionscript 3 NetStream立即暂停未获取元数据,actionscript-3,video,video-streaming,flash-cs5,netstream,Actionscript 3,Video,Video Streaming,Flash Cs5,Netstream,我正在用FlashCS5和ActionScript3编写一个基本的视频播放器。对于这个基本播放器,我将NetStream连接到NetConnection,然后调用流的.play()方法开始加载。虽然我希望元数据和流开始缓冲,但我不希望立即开始播放,因此我立即调用流的.pause()方法。不幸的是,当我立即暂停时,我的流的客户端的onMetaData事件并不总是被调用,因此我不一定得到加载视频的总播放时间 作为一种解决方法,我将对“pause”方法的调用放在onMetaData侦听器中,但有时我的
有没有一种好方法可以阻止我的流播放,并且仍然可以获取我的视频元数据?当触发
NetStatusEvent.STATUS
事件NetStream.Play.Start
时,应该调用pause
更新:
对于非常短的流(例如,buffer
duration
)NetStream.Play.Start
很可能在onMetaData
回调之前被触发
在暂停NetStream.Play.Start之前,检查是否提供了元数据,如果没有,请直接暂停,等待元数据暂停(只需设置一个标志,例如
pauseOnMetaData=true
)。好的,这里有一个简单的小方法,可以从不同的角度来考虑这个问题。。。不要立即将视频对象附加到流对象。在不显示视频对象的情况下,在显示“请稍候”视频的同时开始播放流。在onMetaData侦听器中,查看之前是否存储了持续时间。如果不是,则假设这是对onMetaData的第一次调用,存储持续时间,暂停播放,将流搜索到0,然后附加视频对象
用户将看到一个“请稍候”的提示,等待片刻,然后视频将出现,暂停并准备按预期的持续时间播放。用户在等待时将完全不知道流向前播放了一点。问题是,NetStream.Play.Start事件可能在接收元数据之前触发。我认为这并不能保证在调用pause时会有元数据,而暂停会阻止它接收。即使此时调用pause,流仍会继续缓冲,并且您仍会接收元数据。这两个事件应分别处理。Hhmm。我觉得当我停下来的时候,我从来没有收到元数据。谢谢,我将尝试一下。如果您这样做,您还需要将NetStream的SoundTransform设置为0卷,否则您可能会在播放视频时听到声音以获取元数据。HA!谢谢@DanK,我正在开发一个没有音频输出(扬声器或耳机)的系统,所以这绝对是一个令人讨厌的小疏忽