Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как использовать URLStream для воспроизведения псевдостриминга FLV файла (http://www.flasher.ru/forum/showthread.php?t=165414)

djyamato 22.08.2011 20:57

Как использовать URLStream для воспроизведения псевдостриминга FLV файла
 
Здравствуйте
Никогда еще не пользовался URLStream-ом, все больше использовал NetStream, сейчас хочу освоить первый

Мог бы кто-нибудь поделиться ссылками или кусками кода для воспроизведения псевдострима (отдается через lighttpd)
Воспроизвести с начала у меня получается, но вот когда я перематываю поток, ничего не происходит (звук с картинкой пропадают)

Вот мой код

Код AS3:

 
private var _elapsed_bytes:uint = 0;
private var _buffer:ByteArray = new ByteArray();
 
_stream=new NetStream(val);
....
 
urlStream.addEventListener(StatusEvent.STATUS, urlStreamStatusHandler);
urlStream.addEventListener(Event.COMPLETE, urlStreamCompleteHandler);
urlStream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, urlStreamSecurityErrorHandler);   
 
urlStream.addEventListener(ProgressEvent.PROGRESS, urlStreamProgressHandler);
urlStream.addEventListener(IOErrorEvent.IO_ERROR, urlStreamIOErrorHandler);
....
 
 
public function play(path:String,offset:*=null):void
{
  _stream.play(null);
  urlStream.load(new URLRequest(path));
 
}
 
public function seek(val:Number):void
{
  _stream.play(null);
  var req:URLRequest=new URLRequest(streamPath);
  urlStream.load(req);
 
}
protected function urlStreamProgressHandler(event:ProgressEvent):void
{
  event.target.readBytes(_buffer,0,urlStream.bytesAvailable);
  _buffer.position = 0;
 
  if(_buffer.bytesAvailable > 0)
  {
    _stream.appendBytes(_buffer);
    _elapsed_bytes += _buffer.length;
    trace("_elapsed_bytes="+_elapsed_bytes);
    _buffer.clear();
  }       
}

Я не беру в расчет пока саму перемотку, просто чтобы поток начал играть сначала после того как я вызвал seek метод, что мне дописать надо ?

Было бы великолепно, если кто-нибудь в 3-4 шагах опишет что после чего нужно делать
Возможно, после перемотки, нужно формировать из _buffer FLV ?
Как скармливать стриму загруженные байты ?

cleptoman 23.08.2011 10:20

а зачем вам этот кульбит? если не секрет

wvxvw 23.08.2011 13:35

Хех... нужно посмотреть описание FLV формата, там говорится о том, как узнать, что начался новый кадр (видео или звука), соответственно, хранить эти кадры самому где-нибудь, и потом, когда делаем перемотку, то начинать скармливать данные с нужного кадра. Единственное, нужно учитвать, что для длинных видео роликов или, тем более, видео, которое показывается вживую такой подход приведет к тому, что через какое-то время будет израсходовано очень много памяти.
Я так понимаю, это нужно для того, чтобы можно было точно перемотать за пределами буффера?

djyamato 23.08.2011 13:59

Цитата:

Сообщение от cleptoman (Сообщение 1024690)
а зачем вам этот кульбит? если не секрет

По большей части, для собственного развития

Добавлено через 1 минуту
Цитата:

Сообщение от wvxvw (Сообщение 1024739)
Хех... нужно посмотреть описание FLV формата, там говорится о том, как узнать, что начался новый кадр (видео или звука), соответственно, хранить эти кадры самому где-нибудь, и потом, когда делаем перемотку, то начинать скармливать данные с нужного кадра. Единственное, нужно учитвать, что для длинных видео роликов или, тем более, видео, которое показывается вживую такой подход приведет к тому, что через какое-то время будет израсходовано очень много памяти.
Я так понимаю, это нужно для того, чтобы можно было точно перемотать за пределами буффера?


Спасибо
Да, это нужно для того чтобы перематывать за пределы буффера
А в таком случае мне уже не понадобятся lighttpd или nginx ? Верно же ?

cleptoman 23.08.2011 14:54

NetStream#appendBytes не канает?

djyamato 23.08.2011 15:00

Цитата:

Сообщение от cleptoman (Сообщение 1024767)
NetStream#appendBytes не канает?

неа, у меня в коде так и сделано
До первой перемотки все показывает и поет, чуть перемотал - все замолкает и гаснет

ERrorMAKros 14.03.2012 14:32

Друзья,
было найдено решение?

djyamato 29.03.2012 15:08

неа, не было

ERrorMAKros 02.04.2012 02:17

Вот и у меня все на том же замерло.

i.o. 02.04.2012 11:28

А этот вариант никак не подходит что ли?
http://www.bytearray.org/?p=1689

ERrorMAKros 09.04.2012 13:52

По ссылке:
"bytearray.org got hacked :/
Now migrating to a new home, all data is safe, will just take a few days to be back.
During that time, check the cool features introduced in Flash Player 11.3/AIR 3.3
Thibault".

Не ожидал что когда то этот сайт так вмажут ))) Why? :)

А что там было написано? ...там просто была подсказка к реализации загрузки через appendBytes.
А вот про seek там, кажется, ничего небыло (


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

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