2016-09-19 8 views
2

Exoplayerライブラリは私のためにとても複雑です。誰もAndroid上で新しいリリースのexoplayer 2ライブラリを使用してラジオ局のURLをストリーミングする方法を教えてもらえますか?私は現在、サーバーからmp3ファイルをストリーミングし、オーディオファイルをバックグラウンドで再生するためにIntentServiceの中にプレーヤーを置くことを考えています。前もって感謝します。ここで新しいリリースのExoPlayer 2の実装

答えて

1

ここではExoPlayerの簡単なデモですmp3のためのその後

compile 'com.google.android.exoplayer:exoplayer:r2.4.2' 

public class MainActivity extends AppCompatActivity implements ExoPlayer.EventListener{ 

private BandwidthMeter bandwidthMeter; 
private TrackSelector trackSelector; 
private TrackSelection.Factory trackSelectionFactory; 
private SimpleExoPlayer player; 
private DataSource.Factory dataSourceFactory; 
private ExtractorsFactory extractorsFactory; 
private DefaultBandwidthMeter defaultBandwidthMeter; 
private MediaSource mediaSource; 

private String songUrl = "http://www.mfiles.co.uk/mp3-downloads/edvard-grieg-peer-gynt1-morning-mood-piano.mp3"; 

private Button stopButton; 
private Button startButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    startButton = (Button) findViewById(R.id.btnStart); 
    stopButton = (Button) findViewById(R.id.btnStop); 

    bandwidthMeter = new DefaultBandwidthMeter(); 
    extractorsFactory = new DefaultExtractorsFactory(); 

    trackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); 

    trackSelector = new DefaultTrackSelector(trackSelectionFactory); 

    defaultBandwidthMeter = new DefaultBandwidthMeter(); 

    dataSourceFactory = new DefaultDataSourceFactory(this, 
      Util.getUserAgent(this, "mediaPlayerSample"),defaultBandwidthMeter); 


    mediaSource = new ExtractorMediaSource(Uri.parse(songUrl), 
      dataSourceFactory, 
      extractorsFactory, 
      null, 
      null); 

    player = ExoPlayerFactory.newSimpleInstance(this,trackSelector); 

    player.addListener(this); 
    player.prepare(mediaSource); 

    Log.v("TEST","playing state : " + player.getPlaybackState()); 

    startButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      player.setPlayWhenReady(true); 
     } 
    }); 

    stopButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      player.setPlayWhenReady(false); 
     } 
    }); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    player.setPlayWhenReady(false); 
} 


@Override 
public void onLoadingChanged(boolean isLoading) { 
    Log.i("TEST", "onLoadingChanged: " + isLoading + ""); 
    Log.i("TEST", "Buffered Position: " + player.getBufferedPosition() + ""); 
    Log.i("TEST", "Buffered Percentage: " + player.getBufferedPercentage() + ""); 
} 

@Override 
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { 

    if(playbackState == ExoPlayer.STATE_READY){ 
     Log.i("TEST", "ExoPlayer State is: READY"); 
    } else if (playbackState == ExoPlayer.STATE_BUFFERING){ 
     Log.i("TEST", "ExoPlayer State is: BUFFERING"); 
    } else if (playbackState == ExoPlayer.STATE_ENDED){ 
     Log.i("TEST", "ExoPlayer State is: ENDED"); 
    } else if (playbackState == ExoPlayer.STATE_IDLE){ 
     Log.i("TEST", "ExoPlayer State is: IDLE"); 
    } 


} 

@Override 
public void onTimelineChanged(Timeline timeline, Object manifest) { 

} 

@Override 
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) { 

} 

@Override 
public void onPlayerError(ExoPlaybackException error) { 

} 

@Override 
public void onPositionDiscontinuity() { 

} 

@Override 
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) { 

} 
} 
4

はExoPlayer2を通じてオーディオストリーミングを取得するための非常に基本的なセットアップです:

Handler handler = new Handler(); 
TrackSelector trackSelector = new DefaultTrackSelector(handler); 
LoadControl loadControl = new DefaultLoadControl(); 
SimpleExoPlayer exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl); 

Uri audioUri = Uri.parse("http://stream.basso.fi:8000/stream"); 
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("ExoPlayerDemo"); 
ExtractorsFactory extractor = new DefaultExtractorsFactory(); 
MediaSource audioSource = new ExtractorMediaSource(audioUri, dataSourceFactory, extractor, null, null); 
exoPlayer.prepare(audioSource); 
exoPlayer.setPlayWhenReady(true); 

はい、を介してジャンプするフープがたくさんある... :)

+0

HLSオーディオの場合、MediaSourceを次のように変更してください:new HlsMediaSource(audioUri、dataSourceFactory、1、null、null) – mtkopone

+0

こんにちは、あなたのコードは私のために働いていません。 DefaultTrackSelector()がハンドラインスタンスではなく、TrackSelection.Factoryを期待するようになった可能性がありますか? – matdev

関連する問題