簡體   English   中英

帶有OSMF的Flash視頻mp4元數據

[英]Flash video mp4 metadata with OSMF

如果我在QuickTime播放MP4,則可以在顯示屏上看到隱藏的字幕消息。

多虧了QuickTime我知道元數據在那里,所以我也嘗試在Flash視頻播放器中顯示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

我不熟悉您使用的特定視頻庫,但是如果它“實際上與Open Video Player同義詞”,我在他們的文檔中發現了一些有趣的東西:他們有一個字幕事件 OvpEvent.CAPTION ,該事件通過org.openvideoplayer.cc.Caption傳遞org.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);

由於視頻中有3條曲目,因此,請按照以下步驟操作:

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

...其中很可能是CC曲目。 即,CC不是作為元數據而是作為軌道嵌入的。 如果您在streamMetaData方法中跟蹤這三個對象的屬性,則可能會提供更多信息。

您可能還想嘗試一下OvpEvent.NETSTREAM_TEXTDATA 這看起來像是NetStream的onTextData事件的中繼,它傾向於用於獲取嵌入式字幕。

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

檢查事件對象(與您對其他對象所做的相同),因為文檔似乎毫無意義,只是談論OvpEvent上的一個info屬性,盡管它似乎沒有一個(所以它們可能表示像onMetaData中的data )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM