Video Streaming and Android

Spredzy picture Spredzy · Nov 17, 2010 · Viewed 28k times · Source

Today for one of my app (Android 2.1), I wanted to stream a video from an URL.

As far as I explored Android SDK it's quite good and I loved almost every piece of it. But now that it comes to video stream I am kind of lost.

For any information you need about Android SDK you have thousands of blogs telling you how to do it. When it comes to video streaming, it's different. Informations is that abundant.

Everyone did it it's way tricking here and there.

Is there any well-know procedure that allows one to stream a video?

Did google think of making it easier for its developers?

Answer

Ryan Reeves picture Ryan Reeves · Nov 17, 2010

If you want to just have the OS play a video using the default player you would use an intent like this:

String videoUrl = "insert url to video here";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(videoUrl));
startActivity(i);

However if you want to create a view yourself and stream video to it, one approach is to create a videoview in your layout and use the mediaplayer to stream video to it. Here's the videoview in xml:

<VideoView android:id="@+id/your_video_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
/>

Then in onCreate in your activity you find the view and start the media player.

    VideoView videoView = (VideoView)findViewById(R.id.your_video_view);
    MediaController mc = new MediaController(this);
    videoView.setMediaController(mc);

    String str = "the url to your video";
    Uri uri = Uri.parse(str);

    videoView.setVideoURI(uri);

    videoView.requestFocus();
    videoView.start();

Check out the videoview listeners for being notified when the video is done playing or an error occurs (VideoView.setOnCompletionListener, VideoView.setOnErrorListener, etc).