AS3 уведомление для видео первого кадра - PullRequest
2 голосов
/ 20 апреля 2010

При воспроизведении видео во Flash сначала начинается буферизация, а затем, когда буфер заполнен, воспроизводится. Во время заполнения буфера соответствующий объект Video автоматически отображает первый видеокадр.

Есть ли способ получить уведомление, когда этот кадр доступен? Потому что я хочу скрыть видео компонент, пока не появится изображение для отображения.

В настоящее время я обрабатываю буфер, заполненный NetStreamEvent, поэтому он отображается, когда он начинает воспроизведение. Но теперь мне нужен больший буфер (10 с), поэтому ждать 10 с, чтобы что-то отобразить пользователю, нехорошо.

1 Ответ

0 голосов
/ 09 сентября 2010

вы должны слушать "NetStream.Play.Start";

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.
        }
    }
 }
...