Сброс компонента 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-адреса ==.

Другие вопросы по тегам