Flash AS3: управление буфером NetStream

У меня есть два видеопроигрывателя FLV на сцене, использующие для воспроизведения два объекта AS3 NetStream. Мне нужно, чтобы два проигрывателя синхронизировались, а это означает, что воспроизведение должно начинаться, когда буфер заполнен для обоих потоков, и оба должны быть приостановлены, когда один из буферов опустеет, ожидая повторного заполнения.

Моя проблема в том, что процесс буферизации второго видео начинается только после полной загрузки первого потока (не только bufferTime = 5 секунд, но и целых 10 минут). Есть ли какой-либо способ добиться этого результата, буферизовать 5 секунд из первого потока, затем 5 секунд из второго и так далее?

Спасибо


person egyedg    schedule 23.02.2010    source источник


Ответы (1)


Предположим, вы говорите о прогрессивных потоках ... Вы можете предварительно загрузить их полностью, если необходимо, и сохранить их в памяти до тех пор, пока они не понадобятся.

Для этого:

  • netStream.play(), чтобы начать загрузку
  • Перехватите событие состояния "NetStream.Play.Start" и сразу приостановите () поток (загрузка продолжится).
  • После этого вам просто нужно проверять bytesLoaded обоих потоков, пока вы не будете удовлетворены объемом данных для их воспроизведения.
person Theo.T    schedule 25.02.2010
comment
Спасибо за ответ; да, у меня это уже есть, моя проблема заключалась в том, что второй начал буферизацию после того, как первый закончил буферизацию (оба приостановлены в начале). Несколько минут назад я заметил, что проблема возникает только в Firefox / Chrome, но в IE / Safari все работает нормально ... так что я ищу решение, зная об этом. В любом случае, еще раз спасибо за ваш ответ. - person egyedg; 25.02.2010
comment
Ой, ладно, понял. К сожалению, я сомневаюсь, что вы будете бороться с поведением внутренней загрузки браузеров. Это очень интересно, спасибо, что заметили это! - person Theo.T; 25.02.2010