我正在开发一个流式传输 HLS 视频的原生 Android 应用程序。我正在尝试显示 CEA-608 隐藏式字幕数据,但我遇到了问题。
方法: 我在果冻豆设备(API 4.1+)上运行,它支持隐藏式字幕和 HLS 播放(http://developer.android.com/about/versions/android-4.1.html#Multimedia)。
测试提要: 我正在使用包含字幕数据的 Apple 示例 HLS bip-bop 提要进行测试(https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8)
抓取字幕数据: 根据 Android 文档,我试图通过调用以下方式获取字幕轨道:
"MediaPlayer.getTrackInfo()"
问题: 当我执行 getTrackInfo() 行时播放器崩溃,LogCat 中的输出如下:
E/AndroidRuntime(7311):致命异常:主要 E/AndroidRuntime(7311):java.lang.RuntimeException:失败代码:-38
问题: 1) 原生 Android 应用程序是否支持从 HLS 提要上的流内字幕数据呈现隐藏式字幕?2)如果没有,有其他选择吗?3) 上面链接中的文档(下面引用)表明 MP4 或 3GPP 媒体源支持流媒体字幕。这是否一定会排除 HLS(我认为它是基于 MPEG-2)的工作?
MediaPlayer 现在可以处理带内和带外文本轨道。带内文本轨道作为 MP4 或 3GPP 媒体源中的文本轨道出现。可以通过 addTimedTextSource() 方法将带外文本轨道添加为外部文本源。添加所有外部文本轨道源后,应调用 getTrackInfo() 以获取数据源中所有可用轨道的刷新列表。
谢谢你尽你所能的帮助!