Третья группа вопросов
* Как мы можем вызвать MetadataEvent.CUE_POINT для последовательных ключевых точек, т. Е. Без пропуска ключевой точки. *
* Как мы можем вызвать событие MetadataEvent.CUE_POINT в каждой ключевой точке, когда они, скажем, с интервалом 100 мс. *
Это может показаться странным, но вы не можете гарантировать, что получите конкретное событие ключевой точки. События ключевой точки не маршалируются и не ставятся в очередь. Поскольку частота кадров между контейнером FLV и swf различна, некоторые события просто будут выброшены. Если ваш содержащий SWF-файл находится «между кадрами», он почти наверняка пропустит контрольные точки на FLV. Если контрольные точки разнесены на 100 мс, и вы используете стандартные 24fps для SWF. Я предполагаю, что вы можете ожидать потерять как минимум 1 из каждых 5 событий ключевой точки Это похоже на то, как flash обрабатывает множество вещей (например, сборщик мусора), он делает все возможное, но останавливает выполнение базового процесса, если 'frame' должен двигаться дальше. Даже если вы синхронизируете частоту кадров и интервал ключевой точки, вы все равно время от времени пропускаете события.
Теперь ... все это сказано. Вы можете достичь желаемого, не используя контрольные точки. Просто следите за событием playheadUpdate и отправляйте столько событий, сколько вам нужно по мере увеличения времени воспроизведения. Например ... если вы хотите, чтобы событие происходило каждые 100 мс, а точка воспроизведения переместилась на 223 мс с последнего раза, отправьте 2 события. Если он перемещен только на 30 мс, не отправляйте никаких событий ....
Вторая группа вопросов
Вопрос 1: Почему поиск пропускает ключевые точки и не работает при каждом вызове
Вы сможете искать только ключевые кадры в своем видео. Вы можете определить ключевые точки, где захотите, однако поиск всегда будет искать следующий ближайший ключевой кадр. Вот почему вы видите поведение, которое вы видите.
выдержка из FLVPlayback.seek () для liveocs
... для последовательной загрузки вы можете выполнять поиск только по ключевому кадру, поэтому поиск приводит вас ко времени первого ключевого кадра после указанного времени ... поиск выполняется асинхронно, ... Чтобы получить время после завершения поиска, прослушайте событие поиска ...
Вопрос 2: Как заставить это работать на второй ключевой точке мельницы
Никто не любит это слышать, но вы, вероятно, не сможете сделать это , если только вы не сможете изменить flv и вставить ключевой кадр в эти точки. Однако я предполагаю, что, если бы вы могли сделать это, вам не нужно было бы динамически добавлять ключевые точки.
Вопрос 3. Как динамически добавлять метки в миллисекундном диапазоне без прерывания программы.
Итак, вот где я немного отклонюсь и рекомендую вам вообще не использовать контрольные точки. Похоже, что вы пытаетесь получить событие для запуска в данный интервал во время игры на flv и / или пытаетесь искать заданные позиции на flv.
Поиск любой позиции на flv не требует контрольных точек. Просто передайте время в миллисекундах команде поиска. (С учетом оговорки, о которой говорилось выше, вы сможете искать только ключевые кадры.)
Существует более простой способ получить события на интервале от flvplayback, для которого вы хотите установить playheadUpdateInterval и добавить прослушиватель для события playheadUpdate . Это событие включает время начала игры на момент его отправки.
В вашем случае просто установите интервал 33 мс и делайте все, что хотите, в слушателе, прикрепленном к событию.
При этом следует иметь в виду, что воспроизведение FLV происходит на отдельной «временной шкале» с частотой кадров, отличной от вашего SWF-файла. Из-за этого время между ними почти никогда не будет точным.
Первая группа вопросов
Вопрос 1. Какой правильный способ динамически добавлять ключевые точки в ActionScript 3.0 по длине загруженного фильма с помощью addASCuePoint ()
коррекция вышеприведенный цикл for выглядит нормально
Вопрос 2: Можем ли мы добавить контрольные точки с интервалами в 33 мс, к которым мы можем правильно стремиться? Да, вы можете добавлять ключевые точки в любой интервал или место по вашему желанию, но это никак не влияет на то, где существуют ключевые кадры.
Вопрос 3. Что не так в приведенном выше коде? Честно говоря, это злоупотребление контрольными точками.Они действительно не то, что вы ищете.