Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   NetStream и rtmp:// (http://www.flasher.ru/forum/showthread.php?t=176991)

stweet 22.03.2012 06:18

NetStream и rtmp://
 
Не могу разрешить один интересный момент.
Буду очень признателен за помощь.

В подключении через "http://" я использовал в качестве просмотра прогресса загрузки видео файла "bytesTotal" и "bytesLoaded", переводил в "продолжительность времени" и выводил пользователям.

А вот с подключением через "rtmp://" возникли сложности, "bytesTotal" и "bytesLoaded" выводят по "0".
Воспользовался "bufferLength" и "bufferTime" а т.е. перед выводом загруженного материала я использовал такой код:
Код AS3:

public function get buffer( ):Number
{
        if (_buffer == _duration) return _buffer;
        if (ns.bufferTime < _duration) _buffer = ns.bufferTime ++;
        else if (ns.bufferTime > _duration) _buffer = _duration;
        return _buffer;
}

из кода видно что я постоянно увеличивал "bufferTime" не смотря на то что в справке Adobe указывается "bufferTime" как время до начала показа видео файла, т.е. используется как "время загрузки перед началом воспроизведения файла".

При срабатывании события "NetStream.Buffer.Empty" я изменял переменную "ns.bufferTime" и присваивал ей первоначальное значение(пусть будит 20мс). После события "NetStream.Buffer.Full" я присваивал значение "ns.bufferLength + ns.time" переменой "ns.bufferTime" и продолжал воспроизведение видео файла повторяя все выше указанные действия.

Вот от сюда и возникли трудности.

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

Может у кого есть исходник как пример временной шкалы видео файла, или совет как сделать правильно.
Буду очень признателен за помощь.

В исходниках сети что то не могу найти подходящего варианта, а т.е. в случае с подключением rtmp вообще не нашёл, может так искал?! но тем ни имение пишу тут.

Добавлено через 3 часа 47 минут
Ещё наткнулся на один момент:

Если я используя протокол "rtmp" проигрываю уже готовый видео файл, "onMetaData" в "ns.client" выводит окончательное время файла "onMetaData.duration", а при проигрывании прямого эфира "нет", ну это и логично, ни сервер ни клиент не может знать об окончании записи файла. Тут выход один, не выводить вообще прогресс загрузки файла или всё же ... может есть способ показать количество данных загруженных в настоящий момент в кэш? "bufferLength" в данном случае не помогает, т.е. фиксирует только при старте, далее стоит в исходном значении.

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

У меня в задаче сделать и плей лист и прямой эфир, тут уже прибегаю к совету знатоков!
В данной ситуации, включая вышеуказанные манипуляции, лучше сделать 2 вида подключения?
К примеру "LiveStream" и "FileStream".

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

Может у кого-то есть уже готовое решение, было бы круто!

Добавлено через 13 часов 14 минут
Я так понимаю что, первый кто с этим столкнулся?! =)


Часовой пояс GMT +4, время: 05:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.