在我的代码中的某个时刻,应用程序发现一个指向 .m3u8 文件的 URL。这就是接下来发生的事情:
mVideoView.setVideoURI(Uri.parse(feed.getUrl().toString())); // feed.getUrl returns the url
mVideoView.start();
它在 Android 3.1+ 上运行良好。不适用于早期版本,因为它使用 https(请参阅此:http://developer.android.com/guide/appendix/media-formats.html )
所以我所做的是为 Android 2.2+ 创建了一个新版本的应用程序,它使用vitamio,一个应该能让我更轻松的图书馆。然而,(android.widget.VideoView) 完美地处理了它,(io.vov.vitamio.widget.VideoView) 需要很长时间来加载流并最终在崩溃时说这个:
但是,当我尝试加载此 URL 时:http://devimages.apple.com/iphone/samples/bibpbop/gear1/prog_index.m3u8效果很好!
我无法共享我需要使用的 URL,但这是它指向的 .m3u8 的内容:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=264000
playlist.m3u8?session=003016302664236&index=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1364000
playlist.m3u8?session=003016302664236&index=1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=44000
playlist.m3u8?session=003016302664236&index=2
因此,我可以看到这个示例与 Apple 示例之间的主要区别是我使用 https,我的文件指向其他 .m3u8 文件(而 Apple 的 .m3u8 指向 .ts 文件)。
两者似乎都使用 AAC 音频。
这个问题似乎与vitamio有关。我怎样才能避免这次崩溃?非常感谢。