0

MP4をで再生すると、ディスプレイQuickTimeクローズドキャプションメッセージが表示されます。

QuickTimeメタデータがあることを知っているおかげで、フラッシュビデオプレーヤーでもCCを表示しようとしています。ただし、メタデータを引き出す両方の方法は、ビデオのロードに関する情報を返すだけであり、他に何も取得しません。

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
4

2 に答える 2

1

使用している特定のビデオライブラリについてはよくわかりませんが、「 Open Video Playerと実質的に同義」である場合は、ドキュメントで興味深いものを見つけました。オブジェクトを渡すキャプションのイベントがあります。 OvpEvent.CAPTIONorg.openvideoplayer.cc.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);
于 2012-02-08T21:25:13.987 に答える
0

ビデオには3つのトラックがあるので、これによると:

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

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

あなたOvpEvent.NETSTREAM_TEXTDATAも試してみたくなるかもしれません。これは、埋め込みキャプションを取得するために機能する傾向があるNetStreamのonTextDataイベントのリレーのように見えます。

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

イベントオブジェクトを調べます(他のオブジェクトの場合と同じです)。ドキュメントにはほとんど意味がないため、infoOvpEventのプロパティについては、プロパティがないように見えますが(おそらくdata、onMetaDataのように意味します)。

于 2012-02-08T23:59:17.550 に答える