Флэш-видео mp4 метаданные с OSMF - PullRequest
0 голосов
/ 08 февраля 2012

Если я играю на своем 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

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Я не знаком с конкретной библиотекой видео, которую вы используете, но если она «практически синонимична с Open Video Player », я нашел кое-что интересное в их документах: у них есть событие длятитры OvpEvent.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);
0 голосов
/ 09 февраля 2012

Поскольку в видео 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);

Изучите объект события (так же, как вы делаете для других), потому что документы не имеют большого смысла, говоряо info свойстве в OvpEvent, хотя, похоже, его нет (поэтому они, вероятно, означают data, как в onMetaData).

...