2010-12-06 22 views

答えて

2

あなたは、ストリームのメタデータ内の現在の時間に最も近いキーフレームを確認することができます
UPD
あなたはそのonMetaDataコール処理する必要があり、ストリームの作成:このトレースで

private var metaInfo: Object;
private function initStream():void{ 
    stream = new NetStream(conn); 
    stream.bufferTime = 5;    
    stream.addEventListener(NetStatusEvent.NET_STATUS, onStatus); 
    stream.client = new Object(); 
    stream.client.onMetaData = onMetaData;/*this is what you need*/ 
    video.attachNetStream(stream); 
} 
private function onMetaData(info:Object):void { 
    metaInfo = info; 
    var tmpstr:String = ''; 
    for(var s:String in info){ 
     var tstr:String = s + ' = ' + info[s] + '\n'; 
     tmpstr += tstr.indexOf('object') == -1 ? tstr : ''; 
     for(var a:String in info[s]){ 
      var ttstr:String = s + ':' + a + ' = ' + info[s][a] + '\n'; 
      tmpstr += ttstr.indexOf('object') == -1 ? ttstr : ''; 
      for(var c:String in info[s][a]){ 
       var tttstr:String = s + ':' + a + ':' + c + ' = ' + info[s][a][c] + '\n'; 
       tmpstr += tttstr.indexOf('object') == -1 ? tttstr : '';      
      } 
     } 
    } 
    trace(tmpstr);   
} 

をストリームのメタデータに次のような項目が含まれているかどうかを確認します。
seekpoints:93:offset = 10342550
seekpoints:93:tim E = 165.799

または多分:
キーフレーム:回= 0,0.48,0.96,1.44,1.92,2.4,2.88,3.36,3.84,4.32,4.8,5.28,5.76,6.24
キーフレーム:filepositions = 1063、 95174,136998,176043,209542,239148,271062,302006,331724,363948,395039,427503,456317,483313

メタデータにこの種のオブジェクト(metadata['keyframes']metadata['seekpoints']など)がある場合はエンコーダの設定によって異なります

+0

どうすればいいですか? – Rella

0

静的クラスを使用して、netstreamメタデータオブジェクトをas3オブジェクトに解析しました。 JSON.stringify(parse(info))を使用して、info内のすべての属性をチェックできます。このクラスはちょうど起草して実装します。内部にいくつかのバグがあるかもしれません。

public class NetStreamMetaData 
{ 
    public static function parse(object:Object, isArray:Boolean = false):Object{ 
     var ret:Object = {}; 
     if(isArray) 
      ret = []; 

     var k:String; 
     for(k in object){ 
      if(isNaN(Number(k))){ 
       if(object[k] is Array){ 
        ret[k] = parse(object[k], true); 
       }else{ 
        ret[k] = object[k]; 
       } 
      }else{ 
       if(object[k] is Array){ 
        ret.push(parse(object[k], false)); 
       }else{ 
        ret.push(object[k]); 
       } 
      } 
     } 
     return ret; 
    } 
} 
関連する問題