4

私のコードのある時点で、アプリは.m3u8ファイルを指すURLを見つけます。これは次に起こることです:

mVideoView.setVideoURI(Uri.parse(feed.getUrl().toString())); // feed.getUrl returns the url
mVideoView.start();

また、Android3.1以降ではFINEで動作します。httpsを使用しているため、以前のバージョンにはありません(これを参照してください:http://developer.android.com/guide/appendix/media-formats.html

そこで、私が行ったのは、Android 2.2以降用のアプリの新しいバージョンを作成しました。これは、私にとって簡単になるはずのライブラリであるvitamioを使用しています。ただし、(android.widget.VideoView)がそれを完全に処理した場合、(io.vov.vitamio.widget.VideoView)はストリームのロードに非常に長い時間がかかり、クラッシュ中にこれを言うことになります。

.m3u8をロードするときにログに記録する

しかし、このURLを読み込もうとすると:http ://devimages.apple.com/iphone/samples/bipbop/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に関連しているようです。このクラッシュを回避するにはどうすればよいですか?どうもありがとうございます。

4

1 に答える 1

4

私は解決策を見つけました!

したがって、最初に言わなければならないことは、私は混乱しており、HTTPS を使用していなかったということですが、私のソリューションは https でも機能するはずです。

まず、Gingerbread はライブ ストリーミングをサポートしていないため、おそらく私と同じように Vitamio を使用する必要があります (これもお読みください)。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 playlist
br.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 UiThread


mVideoView.setVideoURI(Uri.parse(url.toString())); //Run this on UiThread

url はビデオ ストリームを指します。そして、そこに行きます!結局大変じゃなかったかな。:)

于 2013-02-14T04:29:51.583 に答える