Flash AS3视频第一帧通知

Flash AS3视频第一帧通知,flash,actionscript-3,netstream,Flash,Actionscript 3,Netstream,当我在Flash中播放视频时,首先,它开始缓冲,然后,当缓冲满时,它播放。当缓冲区填充时,关联的视频对象会自动显示第一个视频帧 当此框架可用时,是否有方法接收通知?因为我想隐藏视频组件,直到有图像显示 目前我处理缓冲区已满的NetStreamEvent,因此它在开始播放时显示。但是现在我需要一个更大的缓冲区(10秒),所以等待10秒向用户显示某些内容是不好的 包装{ 导入flash.display.Sprite; 导入flash.events.*; 导入flash.media.Video; 导入

当我在Flash中播放视频时,首先,它开始缓冲,然后,当缓冲满时,它播放。当缓冲区填充时,关联的视频对象会自动显示第一个视频帧

当此框架可用时,是否有方法接收通知?因为我想隐藏视频组件,直到有图像显示

目前我处理缓冲区已满的NetStreamEvent,因此它在开始播放时显示。但是现在我需要一个更大的缓冲区(10秒),所以等待10秒向用户显示某些内容是不好的

包装{ 导入flash.display.Sprite; 导入flash.events.*; 导入flash.media.Video; 导入flash.net.NetConnection; 导入flash.net.NetStream; 公共类VideoExample扩展了Sprite{ private var videoURL:String=“someVideo.flv”; 私有var连接:NetConnection; 私有var流:NetStream; 私人视频:视频; 公共函数示例(){ 连接=新的网络连接(); connection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY\u ERROR,securityErrorHandler); connection.connect(空); } 私有函数netStatusHandler(事件:NetStatusEvent):void{ 跟踪(“event.info.code”+event.info.code); 开关(事件信息代码){ 案例“NetConnection.Connect.Success”: connectStream(); 打破 案例“NetStream.Play.Start”: addChild(视频); 打破 案例“NetStream.Play.StreamNotFound”: 跟踪(“无法定位视频:+videoURL”); 打破 } } 私有函数connectStream():void{ var-stream:NetStream=新的NetStream(连接); addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler); 视频=新视频(); 视频.附件流(流); stream.play(videoURL); } 私有函数securityErrorHandler(事件:SecurityErrorEvent):void{ 跟踪(“securityErrorHandler:+事件”); } 私有函数asyncErrorHandler(事件:AsyncErrorEvent):void{ //忽略AsyncErrorEvent事件。 } } } 您应该收听“NetStream.Play.Start”

包装{ 导入flash.display.Sprite; 导入flash.events.*; 导入flash.media.Video; 导入flash.net.NetConnection; 导入flash.net.NetStream; 公共类VideoExample扩展了Sprite{ private var videoURL:String=“someVideo.flv”; 私有var连接:NetConnection; 私有var流:NetStream; 私人视频:视频; 公共函数示例(){ 连接=新的网络连接(); connection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY\u ERROR,securityErrorHandler); connection.connect(空); } 私有函数netStatusHandler(事件:NetStatusEvent):void{ 跟踪(“event.info.code”+event.info.code); 开关(事件信息代码){ 案例“NetConnection.Connect.Success”: connectStream(); 打破 案例“NetStream.Play.Start”: addChild(视频); 打破 案例“NetStream.Play.StreamNotFound”: 跟踪(“无法定位视频:+videoURL”); 打破 } } 私有函数connectStream():void{ var-stream:NetStream=新的NetStream(连接); addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler); 视频=新视频(); 视频.附件流(流); stream.play(videoURL); } 私有函数securityErrorHandler(事件:SecurityErrorEvent):void{ 跟踪(“securityErrorHandler:+事件”); } 私有函数asyncErrorHandler(事件:AsyncErrorEvent):void{ //忽略AsyncErrorEvent事件。 } } }
您是否可以生成第一帧(或任何海报帧),自己显示,然后在视频缓冲足够播放时删除它?您是否可以生成第一帧(或任何海报帧),自己显示,然后在视频缓冲足够播放时删除它? package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; public class VideoExample extends Sprite { private var videoURL:String = "someVideo.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video; public function VideoExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { trace("event.info.code "+event.info.code); switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.Start": addChild(video); break; case "NetStream.Play.StreamNotFound": trace("Unable to locate video: " + videoURL); break; } } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); video = new Video(); video.attachNetStream(stream); stream.play(videoURL); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function asyncErrorHandler(event:AsyncErrorEvent):void { // ignore AsyncErrorEvent events. } } }