Flex / Flash полностью буферизирует поток rtmp от Wowza - PullRequest
0 голосов
/ 14 октября 2011

У меня возникли некоторые проблемы при попытке полностью буферизовать предварительно записанный поток rtmp с медиа-сервера Wowza с помощью собственного флеш-плеера.Требование полной предварительной буферизации видео исходит от руководства.Должна быть возможность просмотра всего видео в автономном режиме.

Когда объект netConnection получает соединение, я создаю объект NetStream, для него устанавливаем обработчик события метаданных, который устанавливает для NetStream.maxBufferTime полную продолжительность видео.,Также при создании NetStream я добавляю прослушиватель Event.ENTER_FRAME к компоненту видео, чтобы он проверял, когда видео было загружено (имеет ширину), поэтому он будет останавливаться на первом кадре.

Затем я начинаю воспроизводить видео с netstream.Когда событие метаданных принято, буфер устанавливается, когда первый кадр загружается и отображается на видеообъекте, проигрыватель делает паузу на первом кадре, но продолжает загружать видео в буфер.Теперь, когда я прослеживаю буфер (NetStream.bufferLength), я замечаю следующие явления, которые являются источником большого горя для меня:

Если для NetStream.maxBufferTime установлено значение 100% длины видео,видео полностью буферизируется, и примерно через четыре секунды точка воспроизведения (NetStream.time) перемещается в конец видео.Однако, когда я возобновляю воспроизведение в системе Linux, видео отображается нормально, но точка воспроизведения остается на 100% (что наносит ущерб пользовательской обработке ключевой точки).В системе Windows точка воспроизведения также остается на уровне 100%, но видео воспроизводится со скоростью, в 100 раз превышающей нормальную.

Когда буфер достигает 100%, события NetStream.buffer.flush и NetStream.play.stop (?!?!) срабатывают, но проигрыватель не реагирует ни на один из них, поэтому мне кажется, что это ошибка во флэш-памяти NetStream или Wowza.

Если, однако, я установил NetStream.maxBufferTime в (длина видео - 0,4) буферизация прекращается непосредственно перед концом потока, и NetStream.Play.stop не запускается, а точка воспроизведения остается на первом кадре, но это выглядит слишком хакерским решением.

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

Какие-нибудь указатели?

The Wowzaэто 2. что-то, flex это 4.1 для поддержки flash 10.1, потоки либо записываются с помощью flex / flash-рекордера, либо загружаются на сервер и конвертируются в h.264 (оба показываютэто поведение.) и диапазон версий флэш-памяти от 10,1 до 11,0.

Редактировать: кажется, что окончательный путь, по которому мы пойдем по этому вопросу, будет заключаться в том, что любое видео, которое необходимо защитить, будет обслуживаться как поток RTMPминимальная буферизация и общедоступные видео будут сервироваться по мере прогрессивной загрузки.Как упоминалось в комментариях, rtmp не должен делать буферизацию, поэтому то, что мы делали, было в основном неправильно.Для дальнейшего использования: не буферизуйте больше, чем несколько секунд потока rtmp.

1 Ответ

1 голос
/ 15 октября 2011

Я не слишком уверен в вашем ответе - но мой первый вопрос наверняка был бы: почему вы пытаетесь буферизовать всю длину потокового видео?Я понимаю не ответ - просто пытаюсь получить больше информации!

...