我正在开发一个本地的Android应用程序,用于流式传输HLS视频。我试图显示CEA-608闭路电视字幕数据,但是遇到了问题。
方法: 我正在运行Jelly Bean设备(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): FATAL EXCEPTION: main E/AndroidRuntime(7311): java.lang.RuntimeException: failure code: -38
问题: 1)原生Android应用程序是否支持从HLS源中的流式字幕数据进行闭路电视字幕呈现? 2)如果不支持,是否有替代方案? 3)上面链接中的文档(如下所述)表明MP4或3GPP媒体源支持带内和带外文本轨道。这是否必然排除了HLS(我认为是基于MPEG-2的)的工作?
MediaPlayer现在处理带内和带外文本轨道。 带内文本轨道作为MP4或3GPP媒体源中的文本轨道提供。 带外文本轨道可以通过addTimedTextSource()方法添加为外部文本源。 添加所有外部文本轨道源后,应调用getTrackInfo()以获取数据源中所有可用轨道的刷新列表。
感谢您能提供的任何帮助!