Exoplayerライブラリは私のためにとても複雑です。誰もAndroid上で新しいリリースのexoplayer 2ライブラリを使用してラジオ局のURLをストリーミングする方法を教えてもらえますか?私は現在、サーバーからmp3ファイルをストリーミングし、オーディオファイルをバックグラウンドで再生するためにIntentServiceの中にプレーヤーを置くことを考えています。前もって感謝します。ここで新しいリリースのExoPlayer 2の実装
2
A
答えて
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);
はい、を介してジャンプするフープがたくさんある... :)
関連する問題
- 1. Android Widevine DASHの実装+ ExoPlayer
- 2. ExoPlayer 2移行
- 3. ExoPlayer 2プレイリストリスナー
- 4. ExoPlayer 2の品質セレクタ
- 5. Android新しい下部ナビゲーションの実装
- 6. 現在のSpring 4.0.7リリースを使用しない統合テストの実装方法
- 7. 新しいmatlabリリースで古いmexファイルを実行中
- 8. Angular 2+のWebComponent実装
- 9. Mavenの新しいPodio Java APIリリース
- 10. Exoplayer 2を使用したダイナミックプレイリスト
- 11. 2つの実装の違いは?
- 12. ExoPlayerのクイックシークレット
- 13. longItemClickの後にExpandableListViewリリースのリスナーを実装する方法
- 14. ライトボックス2実装
- 15. Angular 2の最終リリースでangle2-tree-componentを実装中にエラーが発生しました
- 16. android exoplayerの使い方
- 17. ライブラリ関数の新しい実装とその中の古い実装の呼び出し
- 18. clangでブロックのカスタム保持リリースを実装する方法
- 19. のGithub:そのようなアンドロイドのEXOplayerとしてEXOplayer
- 20. 角2オブザーバブルの実装
- 21. C++ 2つのis_union_or_class実装
- 22. socketioは2つの実装
- 23. 平均スタック2の実装
- 24. Ionic 2のGoogleMap.OnInfoWindowClickListenerを実装します。
- 25. ExoPlayerを使用したバッファオーディオライブストリーム
- 26. IBOutletsプロパティ。リリースまたはリリースしない
- 27. オペレータの新しい実装の可視性の問題
- 28. Exoplayer 2プレイヤーがプレイを再開しない
- 29. 新しいoffline_accessトークンの実装JavaScriptを使用したFacebookアプリケーション
- 30. GitHubの新しいリリースでカスタム動作を実行するには?
HLSオーディオの場合、MediaSourceを次のように変更してください:new HlsMediaSource(audioUri、dataSourceFactory、1、null、null) – mtkopone
こんにちは、あなたのコードは私のために働いていません。 DefaultTrackSelector()がハンドラインスタンスではなく、TrackSelection.Factoryを期待するようになった可能性がありますか? – matdev