AndroidのVideoViewを使ってストリーミング通信
ネイティブの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というエラーがでますが
実機では問題なく動きます。