Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Срабатывание события onMetaData (http://www.flasher.ru/forum/showthread.php?t=122279)

Bred45 06.03.2009 15:02

Срабатывание события onMetaData
 
Привет всем.
Приведу небольшой абстрактный код, так чтобы вычленить проблему.
Код AS1/AS2:

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
my_video.attachVideo(ns);
ns.play("test.flv");
ns.onMetaData = function(infoObject:Object) {
        trace("запуск onMetaData");
};
ns.onStatus = function(infoObject:Object):Void  {
        if (infoObject.code == "NetStream.Play.Start") {
                ns.seek(0);
        }
};

Есть два flv видеоролика. Оба имеют метаданные.

Ролик 1 имеет метаданные:

Код:

filesize = 3224817
audiocodecid = 2
stereo = false
audiosamplesize = 16
audiosamplerate = 44100
videocodecid = 4
framerate = 1000
videodatarate = 0
height = 288
width = 352
duration = 57.417

Ролик 2 имеет метаданные:

Код:

canSeekToEnd = true
audiocodecid = 2
audiodelay = 0.038
audiodatarate = 64
videocodecid = 4
framerate = 25
videodatarate = 400
height = 288
width = 352
duration = 27.76

Вопрос 1: Почему onMetaData выполняется только на первом ролике? Из-за наличия в нем filesize?

Вопрос 2: Второй ролик был закодирован Adobe Flash CS3 Video Encoder. Почему в нем нет filesize?

Вопрос 3: Если убрать команду ns.seek(0), то событие будет срабатывать на обоих роликах. Объясните, если можно, в двух словах это влияние. Мне казалось, что onMetaData срабатывает после play, если ролик содержит метаданные.

Буду очень признателен, если кто-то подскажет ответы. Спасибо.

Molecula 06.03.2009 21:49

1) Нет, не из-за filesize;
2) Разные энкодеры зашивают разные данные;
3) Да, тогда и срабатывает onMetaData.

Зачем перемотку в начало поставили, когда видео начало проигрываться? Получается нелогично как-то.

Цитата:

Если убрать команду ns.seek(0), то событие будет срабатывать на обоих роликах.
Какое событие, onMetaData?

А как второй ролик запускаете?

cleptoman 06.03.2009 22:34

по seek срабатывает onStatus, но не отрабатывает onMetaData

Bred45 07.03.2009 12:37

Ребята, спасибо что ответили.
Второй ролик запускается как и первый (по очереди переименовываем их в test.flv).

Цитата:

1) Нет, не из-за filesize;
А из-за чего?

Цитата:

2) Разные энкодеры зашивают разные данные;
На работе закодированный этой же программой ролик событие onMetaData запускает, а на домашнем - никак. А настроек для матаданных в самом энкодере я не нашел.

Цитата:

Какое событие, onMetaData?
да

Цитата:

Зачем перемотку в начало поставили, когда видео начало проигрываться? Получается нелогично как-то.
Согласен. Но сейчас вопрос в другом: в различном поведении на разных роликах.

Цитата:

по seek срабатывает onStatus, но не отрабатывает onMetaData
Хорошо. Но почему не отрабатывает на ролике 2, но отрабатывает на ролике 1?

И все равно механизм мне не понятен. Запускаем play (видео, кстати, запускается), метаданные получены, что мешает сработать onMetaData еще даже до выполнения seek. Или как это seek может отключить это событие...
:)


Часовой пояс GMT +4, время: 05:50.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.