yleistäMetadata sisältää paljon käyttökelpoista informaatiota tiedostosta ja siihen voi upottaa miltei mitä tahansa dataa. Käytännöllisiä esimerkkejä ovat mm. tekstitykset, käyttöoikeudet sekä itse tiedostoon liittyvä statistiikka. Enkoodaukseen käytettävästä softasta riippuen oletuksena upotettava metadata vaihtelee suurestikin, mutta ainakin duration-ominaisuus löytyy varmasti jokaisesta.

Metadataan päästään käsiksi onMetaData-tapahtumakäsittelijän avulla, mutta sitä ennen pitää luonnollisesti odottaa, että ko. data on vastaanotettu Flashissa.

onMetaDataa kutsutaan NetStream.play()-komennon laukaisun jälkeen, mutta ennen kuin itse videota aletaan toistamaan.

Jostain (ainakin minulle) tuntemattomasta syystä NetStream-luokan onMetaDataa kutsutaan perinteisen AS3 event modelin (addEventListener) sijaan suoraan NetStream-objektin kautta, joten tässä vielä muistutukseksi.

var metaObject:Object = new Object();
metaObject.onMetaData = metaDataListener;
NetStreamObject.client =  metaObject;
function metaDataListener(o:Object):void
{
//koodi
}

Tai vaihtoehtoisesti:

NetStreamObject.client = this;
function onMetaData(o:Object):void
{
//koodi
}

Ja vielä esimerkki “Main.as“:

package
{
   import flash.display.Sprite;
   import flash.net.NetConnection;
   import flash.net.NetStream;
 
   public class Main extends Sprite
   {
      private var nc:NetConnection;
      private var ns:NetStream;
 
      public function Main()
      {
         nc = new NetConnection();
         nc.connect(null);
 
         ns = new NetStream(nc);
         ns.client = this;
         ns.play("myVideo.flv");
      }
 
      public function onMetaData(o:Object):void
      {
         var propName:String;
         for (propName in o)
         {
            trace(propName + ": " + o[propName]);
         }
      }
   }
}
Jos et ole määritellyt onCuePoint- tai onMetaData-tapahtumankäsittelijää ja yrität ladata videon, Flash CS3 generoi virheilmoituksen.
Share

Comments

Leave a comment