Is Android 2.2 HTTP progressive streaming = HTTP Live Streaming?

前端 未结 2 1283
故里飘歌
故里飘歌 2020-12-12 20:00

The Stagefrigh media framework (Android 2.2) supports HTTP progressive streaming.
What\'s that means? I.e. is this an HTTP Live Streaming protocol realization?

2条回答
  •  萌比男神i
    2020-12-12 20:27

    One big practical diffrence is that Stagefright media Framework supports mpeg3 streaming, which the old engine didn't. So you can use (shoutcast) mp3streams for example.

    Here is a simple example of implementation, which streams a shoutcast URL: http://fr3.ah.fm:9000. Note that this only works on Android 2.2 and up.

    import android.app.Activity;
    import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.net.Uri;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    public class SimpleMusicStream extends Activity implements
      MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener,
      MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener {
    
     private String TAG = getClass().getSimpleName();
     private MediaPlayer mp = null;
    
     private Button play;
     private Button pause;
     private Button stop;
    
     @Override
     public void onCreate(Bundle icicle) {
      super.onCreate(icicle);
      setContentView(R.layout.main);
    
      play = (Button) findViewById(R.id.play);
      pause = (Button) findViewById(R.id.pause);
      stop = (Button) findViewById(R.id.stop);
    
      play.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
        play();
       }
      });
    
      pause.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
        pause();
       }
      });
    
      stop.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
        stop();
       }
      });
     }
    
     private void play() {
      Uri myUri = Uri.parse("http://fr3.ah.fm:9000/");
      try {
       if (mp == null) {
        this.mp = new MediaPlayer();
       } else {
        mp.stop();
        mp.reset();
       }
       mp.setDataSource(this, myUri); // Go to Initialized state
       mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
       mp.setOnPreparedListener(this);
       mp.setOnBufferingUpdateListener(this);
    
       mp.setOnErrorListener(this);
       mp.prepareAsync();
    
       Log.d(TAG, "LoadClip Done");
      } catch (Throwable t) {
       Log.d(TAG, t.toString());
      }
     }
    
     @Override
     public void onPrepared(MediaPlayer mp) {
      Log.d(TAG, "Stream is prepared");
      mp.start();
     }
    
     private void pause() {
      mp.pause();
     }
    
     private void stop() {
      mp.stop();
    
     }
    
     @Override
     public void onDestroy() {
      super.onDestroy();
      stop();
    
     }
    
     public void onCompletion(MediaPlayer mp) {
      stop();
     }
    
     public boolean onError(MediaPlayer mp, int what, int extra) {
      StringBuilder sb = new StringBuilder();
      sb.append("Media Player Error: ");
      switch (what) {
      case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
       sb.append("Not Valid for Progressive Playback");
       break;
      case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
       sb.append("Server Died");
       break;
      case MediaPlayer.MEDIA_ERROR_UNKNOWN:
       sb.append("Unknown");
       break;
      default:
       sb.append(" Non standard (");
       sb.append(what);
       sb.append(")");
      }
      sb.append(" (" + what + ") ");
      sb.append(extra);
      Log.e(TAG, sb.toString());
      return true;
     }
    
     public void onBufferingUpdate(MediaPlayer mp, int percent) {
      Log.d(TAG, "PlayerService onBufferingUpdate : " + percent + "%");
     }
    
        }
    

    main.xml:

    
    
     
     
     
    
    

    Read more http://developer.android.com/guide/topics/media/index.html check Asynchronous Preparation

提交回复
热议问题