私が理解したように、Android 3.0以降はラジオストリーミングm3u8を再生できます- http://developer.Android.com/guide/appendix/media-formats.html ==
私はこのリンクを入れました- http://content.mobile-tv.sky.com/content/ssna/live/ssnraudio.m3u8 MediaPlayerに入れましたが、LogCatでは次のようになります。
06-01 09:04:44.287: INFO/LiveSession(33): onConnect 'http://content.mobile-tv.sky.com/content/ssna/live/ssnraudio.m3u8'
06-01 09:04:44.287: INFO/NuHTTPDataSource(33): connect to content.mobile-tv.sky.com:80/content/ssna/live/ssnraudio.m3u8 @0
06-01 09:04:44.747: INFO/NuHTTPDataSource(33): connect to content.mobile-tv.sky.com:80/content/ssna/live/ssnraudio.m3u8 @0
06-01 09:04:45.019: INFO/NuHTTPDataSource(33): connect to content.mobile-tv.sky.com:80/content/ssna/live/ssnraudio/ssnr_052311_071632_78731.aac @0
**06-01 09:04:45.817: ERROR/LiveSession(33): This doesn't look like a transport stream...**
06-01 09:04:45.967: INFO/HTTPLiveSource(33): input data EOS reached.
これは私のソースコードです:
mp = new MediaPlayer();
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try {
mp.setDataSource("http://content.mobile-tv.sky.com/content/ssna/live/ssnraudio.m3u8");
mp.prepare();
mp.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
mp.stop();
mp.reset();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
これはAndroidで.M3U8ストリーミングを再生する方法の私の例です
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical" >
<VideoView
Android:id="@+id/myVideoView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
Main.Java
package com.grexample.ooyalalive;
import Java.net.URL;
import Android.app.Activity;
import Android.net.Uri;
import Android.os.Bundle;
import Android.widget.MediaController;
import Android.widget.VideoView;
public class Main extends Activity {
private String urlStream;
private VideoView myVideoView;
private URL url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_vv);//***************
myVideoView = (VideoView)this.findViewById(R.id.myVideoView);
MediaController mc = new MediaController(this);
myVideoView.setMediaController(mc);
urlStream = "http://jorgesys.net/i/irina_delivery@117489/master.m3u8";
runOnUiThread(new Runnable() {
@Override
public void run() {
myVideoView.setVideoURI(Uri.parse(urlStream));
}
});
}
}
多くの人が.M3U8の再生に問題を抱えているのを見てきました。これは、ストリーミングに使用されるコーデックとデバイスとの互換性によって異なります。たとえば、私の.m3u8ファイルの一部は、画面が1200x800のデバイスでのみサポートされています。以上
このリンクトレイルをたどる: http://code.google.com/p/Android/issues/detail?id=14646
->
http://code.google.com/p/Android/issues/detail?id=16884
->
http://code.google.com/p/Android/issues/detail?id=17118
(ARGGGGH!)
最後に答えを与えます:
基本的にAndroid v2.3&v3.0では、非標準のhttplive://スキームを使用し、3.1ではhttp://を使用しますが、関連するメソッドの呼び出し方法にいくつかのコード回避策がありますメディアフレームワークで。
試してください ExoMedia 、ストリーミングは次のように簡単です:
emVideoView.setVideoURI(Uri.parse("https://archive.org/download/Popeye_forPresident/Popeye_forPresident_512kb.mp4"));
私はm3u8でうまく機能します。
たぶん、Vitamioプラグインを試すことができます http://vov.io/vitamio/
Vitamioは、すべてのAndroidデバイス用のマルチメディアフレームワークです。Vitamioは、はるかに強力な機能が含まれていることを除けば、AndroidのデフォルトのMediaPlayerと同じように機能します。また、完全に無料です!ネットワークプロトコル
次のネットワークプロトコルは、オーディオとビデオの再生でサポートされています。
MMS
RTSP (RTP, SDP)
HTTP progressive streaming
HTTP live streaming (M3U8), for Android 2.1+
FFmpegMediaPlayerを使用できます。