この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ネイティブのAndroidアプリでのストリーミング通信に挑戦しました。
今回はプログレッシブダウンロードではなくメディアサーバを使ってストリーミング通信します。
メディアサーバはWowza Media Server2.2.4の評価版のWindows版を使いました
以下のサイトからダウンロードできます。
http://www.wowza.com/store.html
インストールが完了したらスタートメニューからサービスを起動します。
Wowzaの設定はデフォルトのまま特に変えていません。
準備ができたので実装します。 画面のレイアウトは以下になります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView android:id="@+id/videoView1"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</LinearLayout>
Javaのソースは以下になります。
package sample.streaming;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class SampleStreaming extends Activity {
private final static String URL
= "rtsp://[IPアドレス]:1935/vod/_definst_/sample.mp4";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
VideoView videoView = (VideoView)findViewById(R.id.videoView1);
videoView.requestFocus();
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse(URL));
videoView.start();
} catch (Exception e) {}
}
}
パーミッションは特に追加する必要はありません。
エミュレーターで実行すると以下のようにCanonot Play videoというエラーがでますが
実機では問題なく動きます。