2014-01-23 4 views
2

TL DR версия: Как использовать событие NetStream onSeekPoint для построения таблицы точек поиска?ActionScript 3 NetStream onSeekPoint как

Полный вопрос ниже. Ситуация: flv потоковый видеоплеер в режиме генерации данных, то есть NetStream.play (null), а затем NetStream.appendBytes (байты: ByteArray). При этом вы можете искать только определенные точки видео (так называемые «теги» или «точка поиска»). См. seeking not working in flex 4.5 netStream byteArray, если вы не знаете, о чем я говорю.

Итак, если вы можете создать таблицу тегов из события onMetaData, как описано в приведенной выше ссылке, все будет работать. Но теоретически, если в вашем видеофайле нет метаданных (и по какой-то причине вы не можете предварительно обработать файл, впрыскивающий метаданные с помощью инструмента инжектора, как это предлагается в ссылке выше), вы должны иметь возможность создавать теги стол «на лету» с NetStream onSeekPoint событие:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#event:onSeekPoint (... «Используйте это событие, чтобы построить искать таблицу точек») [следить за фильтрами в верхней части страницы самана, они могут скрыть свойства и функции класса ...!]

Проблема: onSeekPoint объясняется очень плохо. В нем говорится: «ByteCount соответствует байту в первом байте синтаксического анализа для этой точки поиска и сбрасывается в ноль, как описано выше». Ну, выше (где ?!) ничего не описывается, а «byteCount» вообще не определен (это только два экземпляра «byteCount» на всей странице!).

Я обнаружил (см onSeekPoint weirdness - пример 1), что обработчик onSeekPoint получает два объекта, которые просто два ИНТ, 0 и 1.

Что я должен теперь?

Я ничего не нашел на эту тему, надеюсь, кто-то может помочь, спасибо.

Я забыл: пытаясь прочитать, когда запускается событие onSeekPoint, NetStream.time и NetStream.bytesLoaded («Число байтов данных, загруженных в приложение») бесполезны, поскольку bytesLoaded постоянно 0 (я предполагаю, что это еще одна «недокументированная функция» режим генерации данных - хорошая работа Adobe)

ответ

0

Вы должны использовать следующее:

 public function onSeekPoint(time:Number,position:uint):void 
     { 
      var data:Object=new Object(); 
      data.time=time; 
      data.position=position; 

      seekPoint_arrC.addItem(data); 
     } 

seekPoint_arrC является «ArrayCollection» Object.

+0

Я не могу проверить больше, если это работает, однако благодаря вам обоим. – creative