Может ли Flash немедленно приостановить поток RTMP?

Я могу нормально транслировать видео RTMP в JW Player от LongTail Media. Пауза, похоже, работает, однако с помощью монитора ресурсов Windows 7 я вижу, что проигрыватель продолжает загружать данные, когда видео приостановлено, он загружается около 60 секунд (и, похоже, не дольше для более длинных видео). Я нашел то же самое, используя примеры на веб-сайте longtailmedia, поэтому я знаю, что это не то, что я делал.

Мне нужен способ приостановить видео и остановить его загрузку, это сэкономит нам много трафика. Но также продолжайте с того места, где остановились, если снова нажмете кнопку воспроизведения.

Я проверил журналы на нашем медиа-сервере wowza, которые показывают, что проигрыватель действительно ждет 60 секунд, прежде чем он отправит на сервер команду паузы.

Служба поддержки LongTail сообщает, что функция паузы использует встроенный класс NetStream, и его поведение находится вне их контроля.

Я протестировал онлайн-примеры flowplayer и пару примеров Adobe / OSMF, и все они продолжают загружаться в течение 60 секунд после приостановки видео.

Лучше всего было бы заставить это работать в проигрывателе JW, но есть ли какие-нибудь флеш-плееры, которые будут останавливать загрузку во время паузы?

Если это невозможно с RTMP, есть ли какие-нибудь технологии, которые сделают это с флеш-плеером?

Благодарность :)


person CodeMonkey    schedule 18.08.2011    source источник


Ответы (2)


Взглянем на справочник AS3:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#maxPauseBufferTime

Свойство maxPauseBufferTime
maxPauseBufferTime: число Версии среды выполнения: Flash Player 10, AIR 1.5, Flash Lite 4 Указывает, как долго в секундах помещается в буфер сообщения в режиме паузы. Это свойство можно использовать для ограничения объема буферизации в режиме паузы. Как только значение NetStream.bufferLength достигает этого предела, буферизация прекращается.

Если это значение не задано, по умолчанию устанавливается ограничение в 60 секунд или в два раза больше значения NetStream.bufferTime для каждой паузы, в зависимости от того, что больше.

Реализация публичной функции get maxPauseBufferTime (): Number public function set maxPauseBufferTime (value: Number): void

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

person netrowillh    schedule 18.08.2011
comment
Это описание настолько хорошо подходит, что это не может быть совпадением, я отправлю его в службу поддержки jwplayer и посмотрю, что они скажут. Мне не нравится идея написать свой собственный плеер, но, по крайней мере, я знаю, что все, что я хочу, возможно, спасибо :) - person CodeMonkey; 22.08.2011
comment
Для записи jwplayer предоставит вам исходный код, и вы сможете вносить изменения, это была только одна добавленная строка, _stream.maxPauseBufferTime = config.bufferlength; на строку 541 RTMPMediaProvder.as. затем перекомпилируйте и бум, все работает! Спасибо :) - person CodeMonkey; 25.08.2011

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

Это точно такое же поведение, как и при любой потоковой передаче RTMP с таких серверов, как FMS и Red5. Просмотр видео размером 5 МБ может легко создать общий трафик 10-15 МБ на просмотр, если пользователь сильно потирает. (Кстати, вы говорите о трафике, а НЕ о пропускной способности.) Вот почему я не рекомендую использовать потоковую передачу RTMP. Тем не менее, существует множество видеосайтов, использующих потоковую передачу RTMP для миллионов пользователей ...

person Pedro Lobito    schedule 25.08.2011
comment
Привет, я понимаю, о чем вы говорите, но я не упомянул цель моей текущей задачи, потому что мой исходный пост был очень длинным даже без этого. - person CodeMonkey; 25.08.2011
comment
Мы используем плеер в промо-слоте на каждой странице сайта, идея состоит в том, что если он останавливается через 30 секунд, если он привлек чье-то внимание, они нажимают кнопку воспроизведения, чтобы посмотреть остальное, если это не привлекло их внимания, тогда он перестанет загружать данные и сэкономит нам трафик / пропускную способность, извиняюсь, если я неправильно использовал термины, я немного не в своей зоне комфорта! - person CodeMonkey; 25.08.2011
comment
Очевидно, что если кто-то загрузит только 1 мегабайт вместо 5, это упростит работу на стороне сервера, при масштабировании до 100 одновременных пользователей это добавится. Моя теория с RTMP заключается в том, что это будет означать, что мы можем обслуживать больше пользователей, поскольку в среднем человек загрузит ‹100% видео, а не почти каждый получит 100% Плеер, использующий прогрессивную загрузку по http (я думаю!), Находится примерно на 30%. сайта, и он использует 8 мегабайт / с с пиковым временем загрузки 13 мегабайт / с, у нас есть только 16 доступных и мы хотим разместить плеер на всех страницах. - person CodeMonkey; 25.08.2011
comment
Является ли автовоспроизведение видео на всех страницах хорошей вещью, это обсуждение в другой раз - радости быть сотрудником;) Что касается раздела Видео по запросу, над которым я работаю, скорее всего, я буду придерживаться http по причинам, о которых вы упомянули :) - person CodeMonkey; 25.08.2011