Теперь я могу воспроизводить flv bytearrays в OSMF. Ранее я уже мог играть в byteArray, создав новый класс, расширяющий netStream, и переопределив его метод play, чтобы использовать вместо него appendbytes. Так что я сделал, чтобы OSMF использовал его. Я сделал это, создав эти классы:
1. ByteStreamElement - медиа-элемент
2. ByteStreamLoader - расширяет LoaderBase
3. ByteStreamLoadTrait - расширяет LoadTrait
переопределение метода поиска / воспроизведения netstremas:
//manually dispatch seek event since we override seek()
dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS,false,false, {code:"NetStream.Play.Seek", level:"status"}));
//look for byte position based on _seekTime value
flvStream = _sfw.getFlvStream(false);
_seekTime = parameters[1] * 1000; //netstream time in milliseconds
_flvParser.parse(flvStream, false, flvTagSeeker);
flvStream.position = _flvParserProcessed;
//append flvtag from the new byte position to end of flv byteArray
var tmp:ByteArray = new ByteArray();
flvStream.readBytes(tmp, 0, flvStream.bytesAvailable);
_flvParserProcessed = 0;
this.appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK);
appendBytes(tmp)
И используя это так:
mediaPlayerSprite = new MediaPlayerSprite();
addChild(mediaPlayerSprite);
mediaPlayerSprite.media = new ByteStreamElement();
Хотя я действительно не уверен, что это лучший способ сделать это. Не уверен, что лучше всего, если бы я создал новые классы, или я должен был написать какой-нибудь плагин для OSMF, чтобы использовать его для воспроизведения байт-массивов. И еще одна вещь, в которой я действительно нуждаюсь, так это в постоянном добавлении байтов в проигрывателе в случае необходимости. Вот почему я до сих пор не использую это, и пока что буду придерживаться своего собственного «плеера ByteStream», пока не пойму это.