
mVIDeoVIEw.setVIDeoURI(Uri.parse(Feed.getUrl().toString())); // Feed.getUrl returns the urlmVIDeoVIEw.start();
它在AndroID 3.1上运行FINE.不是早期版本,因为它使用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/bipbop/gear1/prog_index.m3u8
它工作正常!
我无法共享我需要使用的URL,但这里指的是.m3u8的内容:
#EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=264000playList.m3u8?session=003016302664236&index=0#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1364000playList.m3u8?session=003016302664236&index=1#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=44000playList.m3u8?session=003016302664236&index=2
所以我在这个和Apple样本之间可以看到的主要区别是,我正在使用https,我的文件指向其他.m3u8文件(而Apple的.m3u8指向.ts文件).
两者似乎都使用AAC音频.
这个问题似乎与维生素有关.我怎样才能解决这次崩溃?非常感谢你.
解决方法 我找到了解决方案!所以我要说的第一件事是我很困惑,而且我没有使用httpS,但我的解决方案也适用于https.
首先,您可能需要像我一样使用Vitamio,因为Gingerbread不支持直播(再次阅读this).现在的问题是,如果您的M3u8文件是.ts文件列表,它应该可以正常工作.但如果它指向其他m3u8文件..
那么你必须自己解析它.你可以这样做,例如:
url = new URL(livetvchannel.getUrl());inputStream M3U8 = (inputStream) url.getContent(); BufferedReader br = new BufferedReader(new inputStreamReader(M3U8));for(int i = 0; i < 2; ++i) br.readline();String target = br.readline(); //this parses the third line of the playListbr.close();url = new URL(baseURL.concat(target)); //if the m3u8 url is relative,you have to concat it with the path//Note: You have to do all this in a thread,you can't do network on UiThreadmVIDeoVIEw.setVIDeoURI(Uri.parse(url.toString())); //Run this on UiThread
url将指向视频流.你去吧!最后不是那么难. 总结
以上是内存溢出为你收集整理的在android 2.3上通过HTTPS播放.m3u8文件全部内容,希望文章能够帮你解决在android 2.3上通过HTTPS播放.m3u8文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)