AS3 - невозможно очистить FLV с помощью netstream.seek () после завершения загрузки FLV - PullRequest
0 голосов
/ 28 октября 2010

Я пытаюсь воспроизвести FLV, используя класс Netstream - стандартный материал, на самом деле не использующий ничего более сложного, чем то, что вы можете найти в файлах справки.Я создал панель управления с панелью, с помощью которой можно щелкать, перетаскивать и пролистывать видео.

При экспорте в Flash Player 9 все работает нормально, и я могу пролистывать видео, но только покаFLV все еще загружается.Как только он достигает 100%, очистка (с использованием Netstream.seek ()) становится невероятно безразличной, почти на грани сбоя проигрывателя.

Я убил все ENTER_FRAMES, удалил всех ненужных слушателей и аннулировал всеЯ могу думать о том, что, как только нагрузка заканчивается, кажется, что происходит что-то чрезвычайно ресурсоемкое.

Кто-нибудь когда-нибудь видел это?Я никогда не сталкивался с этим и не могу найти ничего похожего на разных форумах.

Код ниже, но я не думаю, что действия по перетаскиванию мышью являются проблемой!Отлично в Flash CS4 IDE, не работает в браузере.

Спасибо за любую помощь, которую вы можете оказать,

Гарет

    // Drag
    private function dragVideo(e:MouseEvent):void {

        // Match the x position of the dragger to the x position of the mouse
        videoControls.progressBar.dragger.x = videoControls.progressBar.barInner.mouseX;

        // If this results in the dragger moving outside the dragging area, constrain it
        if (videoControls.progressBar.dragger.x < videoProgressRectangle.left) {
            videoControls.progressBar.dragger.x = videoProgressRectangle.left;
        } else if (videoControls.progressBar.dragger.x > videoProgressRectangle.right) {
            videoControls.progressBar.dragger.x = videoProgressRectangle.right;
        }

        // As the dragger moves, work out its position as a percentage of the total distance it CAN move
        // That distance is the width of the black inner bar but you must also accomodate the centred registration point of the dragger
        // So knock off half the dragger's width from it's current position (which gives the left edge of the inner bar)
        // Then knock off the dragger's width minus the 2px overhang of the white progress bar border, from the total draggable distance
        videoSeekPercentageMouse = (videoControls.progressBar.dragger.x - (videoControls.progressBar.dragger.width / 2)) / (videoControls.progressBar.barInner.width - (videoControls.progressBar.dragger.width - 2));

        // Now use that percentage to seek the video to the equivalent percentage of its total time
        if (videoSeekPercentageMouse <= 0) {
            videoNetStream.seek(0);
        } else if (videoSeekPercentageMouse >= 1) {
            // Because video metaData says the length is xyz while the real length is xyz + 0.015,
            // seek to slightly before the end 
            videoNetStream.seek(videoDuration - 0.016);
        } else {
            videoNetStream.seek(videoDuration * videoSeekPercentageMouse);
        }

        // Show the video's current progress
        videoControls.progressBar.barProgress.scaleX = videoSeekPercentageMouse;

        // After the mouse moves update the display
        e.updateAfterEvent();

    }

1 Ответ

1 голос
/ 27 июня 2011

Понял!

Вы должны попробовать это ..

Приостановить потоковую передачу "до" поиска .. Seek () И затем возобновить потоковую передачу!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...