0

如果我在其中播放 MP4,QuickTime我可以在显示屏上看到我的隐藏式字幕消息。

感谢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
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]

......其中一个很可能是CC轨道。即,CC 不是元数据,而是作为轨道嵌入。如果您在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 回答