在Flash / AS3中,如何解码或捕获嵌入在mp4中的CEA-608隐藏式字幕?我似乎无法得到标题数据的提示,也无法找到任何可以指向正确方向的文档。任何文档,示例或想法都会非常有用。
我正在使用OSMF在AS3中构建视频播放器。我似乎无法找到/任何/关于在m3u8视频中访问mp4块中嵌入的CEA-608隐藏字幕的文档。
OSMF CaptioningPlugin需要一个外部XML文件,以便不会这样做;我正在寻找嵌入式字幕轨道的集成细节。
我尝试将onTextData
,onMetaData
,onCaptionData
,onTextRR
处理程序和听众附加到OSMF Netstream
,绝对没有运气(如......这些事件或处理者都没有发射或返回任何东西)。
私有函数onTraitAdd($ e:MediaElementEvent):void { var mediaElement:MediaElement =($ e.target as MediaElement);
switch ($e.traitType) {
case MediaTraitType.LOAD:
_netStreamLoadTrait = mediaElement.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait;
_netStreamLoadTrait.addEventListener(LoadEvent.LOAD_STATE_CHANGE, onNetStreamLoaded);
break;
}
}
private function onNetStreamLoaded ($e:LoadEvent) : void {
var netStream:NetStream = _netStreamLoadTrait.netStream;
netStream.client.addHandler("onTextData", onTextData);
netStream.client.addHandler("onCuePoint", onTextData);
netStream.client.addHandler("onMetaData", onTextData);
netStream.client.addHandler("onCaptionData", onTextData);
netStream.client.addHandler("onTextRR", onTextData);
netStream.client.addHandler("onCaptionInfo", onTextData);
netStream.addEventListener("onTextData", onTextData);
netStream.addEventListener("onCuePoint", onTextData);
netStream.addEventListener("onMetaData", onTextData);
netStream.addEventListener("onCaptionData", onTextData);
netStream.addEventListener("onTextRR", onTextData);
netStream.addEventListener("onCaptionInfo", onTextData);
netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStreamStatus);
netStream.addEventListener(NetDataEvent.MEDIA_TYPE_DATA, onStreamData);
}
我无法判断问题是否与我的OSMF实施有关(也许我正在收听错误的NetStream),或者如果问题是没有办法将这些数据输出的视频。
http://stream.flowplayer.org/big_buck_bunny_with_captions.mp4 http://now.video.nfl.com/i/captiontest/closedcaptiontest_,350k,550k,.mp4.csmil/master.m3u8(此示例文件更复杂,但因为它需要HLS插件)
我尝试使用OSMFCCDecoder.swc
(很难找到,uploaded here)。非常little documentation,没有关于预期结果的信息。
同样反编译JWPlayer
以查看它们如何处理字幕,它们解析出byteArray ref。
查看在JWPlayer中播放字幕的步骤
jwplayer("container_wrapper")
.setup({
file: "http://now.video.nfl.com/i/captiontest/closedcaptiontest_,350k,550k,.mp4.csmil/master.m3u8"
});
答案 0 :(得分:2)
HLS Streams可以包含几种不同格式的字幕:
CEA608嵌入在H264 SEI NALU中,如ANSI / SCTE 128 2010第8节中所述。因此,为了解码它,您需要部分解码H.264比特流。 您提供的链接http://help.adobe.com/en_US/adobemediaserver/devguide/WS5262178513756206-55daa065139e25f4596-8000.html似乎描述了用于解码CEA608的库,我相信预期的结果将是通过视频呈现的文本。
自己解码CEA608很难,因为这是一种基于字符的格式,可能包括字母,数字,西班牙语,退格键,颜色和位置标记。您可以在此处找到CEA608标准:http://www.ce.org/Standards/Standard-Listings/R4-3-Television-Data-Systems-Subcommittee/Line-21-Data-Service.aspx 您可能还需要查看用于解码H264 NALU的方法的MPEG2传输流规范。