Bred45
06.03.2009, 15:02
Привет всем.
Приведу небольшой абстрактный код, так чтобы вычленить проблему.
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, если ролик содержит метаданные.
Буду очень признателен, если кто-то подскажет ответы. Спасибо.
Приведу небольшой абстрактный код, так чтобы вычленить проблему.
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, если ролик содержит метаданные.
Буду очень признателен, если кто-то подскажет ответы. Спасибо.