AndroidのVideoViewを使ってストリーミング通信

2011.08.03

この記事は公開されてから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というエラーがでますが
実機では問題なく動きます。


自分は無線LANを使って試したので簡単でした。