2012-02-08 14 views
0

QuickTimeでMP4を再生すると、クローズドキャプションのメッセージが表示されます。OSMFのFlashビデオmp4メタデータ

QuickTimeのおかげで、私はメタデータがそこにあることを知っていますので、私もフラッシュビデオプレーヤーにCCを表示しようとしています。しかし、メタデータを引き出す2つの方法は、ビデオの読み込み時にのみ情報を返すため、他に何も得られません。

私はmp4からメタデータを正しく読み込んでいないと思いますか?あるいは、CCデータがメタデータにないのでしょうか?

コード

private function streamMetaData(obj:Object):void { 
    this._metaData = obj; 
    for(var key:String in obj) { 
     trace("STREAM_METADATA: " + key + "=" + obj[key]); 
    } 
} 
private function onMetaData(event:OvpEvent):void { 
    for(var key:String in event.data) { 
     trace("METADATA: " + key + "=" + event.data[key]); 
    } 
} 

this._sprite = new AkamaiMediaSprite(); // essentially synonymous with OVP (OSMF) 

this.sprite.addEventListener(OvpEvent.METADATA, this.onMetaData, false, 0, true); 
this.sprite.netStream.client = {onMetaData:this.streamMetaData}; 

出力

STREAM_METADATA: trackinfo=[object Object],[object Object],[object Object] 
STREAM_METADATA: avcprofile=77 
STREAM_METADATA: duration=1657.835 
STREAM_METADATA: moovPosition=131287896 
STREAM_METADATA: width=512 
STREAM_METADATA: avclevel=21 
STREAM_METADATA: height=288 
STREAM_METADATA: audiosamplerate=44100 
STREAM_METADATA: videoframerate=15 
STREAM_METADATA: videocodecid=avc1 
STREAM_METADATA: audiocodecid=mp4a 
STREAM_METADATA: audiochannels=2 
STREAM_METADATA: aacaot=2 
METADATA: trackinfo=[object Object],[object Object],[object Object] 
METADATA: avcprofile=77 
METADATA: duration=1657.835 
METADATA: moovPosition=131287896 
METADATA: width=512 
METADATA: avclevel=21 
METADATA: height=288 
METADATA: audiosamplerate=44100 
METADATA: videoframerate=15 
METADATA: videocodecid=avc1 
METADATA: audiocodecid=mp4a 
METADATA: audiochannels=2 
METADATA: aacaot=2 

答えて

1

私はあなたが使用している特定のビデオライブラリに慣れていないんだけど、それは「Open Video Playerと実質的に同義」だ場合、私は彼らのドキュメントに何か面白いものを見つけました:彼らはorg.openvideoplayer.cc.Captionオブジェクトに沿って通過するevent for captionsOvpEvent.CAPTIONを持っています。

多分これは(未テスト)動作します:

private function onCaptionEvent(event:OvpEvent):void { 
    if (event.data is Caption) { 
     var caption:Caption = (event.data as Caption); 
     trace("Caption:", caption.text); 
     trace("Start time:", caption.startTime); 
     trace("End time:", caption.endTime); 
    } 
} 

this.sprite.addEventListener(OvpEvent.CAPTION, this.onCaptionEvent, false, 0, true); 
+0

偉大な示唆!私は試してみましたが、残念ながらそれは勝者ではありませんでした。 – Jacksonkr

0

このによる映像では3曲ありますので:

STREAM_METADATA: trackinfo=[object Object],[object Object],[object Object] 

が...それは可能性がありますそのうちの1 CCのトラックです。つまり、メタデータではなく、CCがトラックとして埋め込まれています。 streamMetaDataメソッドで3つのオブジェクトのプロパティをトレースすると、より多くの情報が得られます。

OvpEvent.NETSTREAM_TEXTDATAもお試しください。これはNetStreamのonTextDataイベントのリレーのように見えますが、これは埋め込みキャプションを取得するのに役立ちます。

this.sprite.addEventListener(OvpEvent.NETSTREAM_TEXTDATA, this.onTextData, false, 0, true); 

ドキュメントはOvpEvent上info財産について言えば、ほとんど意味を作るので、1つを持っていないようだ(そう、彼らはおそらく意味が、(あなたが他人のために行うと同じ)イベントオブジェクトを調べonMetaDataのようなdata)。

関連する問題