Сброс компонента FLVPlayback для воспроизведения с тем же источником
Я использую один и тот же компонент FLVPlayback для воспроизведения многих видео с переходами страниц на большом флеш-сайте, который я создаю. При каждом переходе я устанавливаю источник компонента, используя myFLVPlayback.source
и прислушиваться к fl.video.VideoEvent.READY
событие, прежде чем продолжить с каждым переходом страницы. Это прекрасно работает, если для перехода между каждой парой страниц используется другое видео.
К сожалению, я столкнулся с проблемой, когда одно и то же видео перехода между страницами нужно вызывать для двух последовательных переходов. При воспроизведении одного и того же видео дважды подряд source
свойство компонента к значению, которое у него уже есть, похоже, ничего не делает, а это означает, что мои слушатели fl.video.VideoEvent.READY
никогда не стреляй Я мог бы сделать что-то хакерское, как установка source
крошечному, никогда не использовавшемуся в другом месте FLV, прежде чем устанавливать его в FLV, который я на самом деле использую для перехода в качестве средства "сброса" компонента, но я хотел бы знать, каковы лучшие практики в такой ситуации, как это (поскольку передовые практики с чем-то вроде FLVPlaybackComponent могут обсуждаться с открытым лицом).
Я просмотрел liveocs для компонента, но пришел с пустыми руками, и вручную использовать объекты NetStream, NetConnection и Video на этом позднем этапе на самом деле не вариант.
2 ответа
Я бы предложил использовать жгут, который проверяет, является ли URL, который вы собираетесь воспроизвести, тем же, что и для предыдущего перехода, и, если это так, просто ищите (0) (т.е. перематывайте видео) вместо сброса источника. Сброс источника может привести к повторному загрузке видео (например, если кеш браузера отключен), и это, вероятно, совсем не то, что вам нужно.
if (myFlvPlayback.source == nextTransitionUrl) {
myFlvPlayback.seek(0);
startTransition();
}
else {
myFlvPlayback.source = nextTransitionUrl;
// The "ready" event will fire, and your event handler will start playback
}
Посмотрите на метод FLVPlayback.seek().
ура
Похоже, этот вопрос уже давно решен, но я все равно подумала. Чтобы точно эмулировать описанное вами поведение, вы можете проверить, является ли источник == для следующего URL, а затем просто вызвать dispatchEvent для экземпляра flvPlayback напрямую. Таким образом, он ведет себя так, как если бы URL-адрес был другим, и единственное ручное вмешательство, в котором вам пришлось бы кодировать, это просто проверка того, являются ли URL-адреса ==.