私はExoPlayerで基本的なアプリケーションを構築するのに苦労しています。Google ExoPlayerガイド
答えて
あなたのbuild.gradle
コンパイル 'com.google.android.exoplayer:exoplayer:R2.1.1' でこれを追加する必要がまず
1.あなたのレイアウトファイル
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.google.android.exoplayer2.ui.SimpleExoPlayerView
android:id="@+id/player_view"
android:focusable="true"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
2.あなたのクラスファイル
public class ExoPlayerActivity extends AppCompatActivity implements ExoPlayer.EventListener {
SimpleExoPlayer player;
String path; // it can be url of video for online streaming or a url of local video
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exoplayer);
// set your path here
path=<your path>;
// 1. Create a default TrackSelector
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveVideoTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
// 2. Create a default LoadControl
LoadControl loadControl = new DefaultLoadControl();
// 3. Create the player
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
SimpleExoPlayerView playerView = (SimpleExoPlayerView) findViewById(R.id.player_view);
playerView.setPlayer(player);
playerView.setKeepScreenOn(true);
// Produces DataSource instances through which media data is loaded.
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "ExoPlayer"));
// Produces Extractor instances for parsing the media data.
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
// This is the MediaSource representing the media to be played.
MediaSource videoSource = new ExtractorMediaSource(Uri.parse(path),
dataSourceFactory, extractorsFactory, null, null);
// Prepare the player with the source.
player.addListener(this);
player.prepare(videoSource);
playerView.requestFocus();
player.setPlayWhenReady(true); // to play video when ready. Use false to pause a video
}
@Override
protected void onPause() {
super.onPause();
if (player != null) {
player.setPlayWhenReady(false); //to pause a video because now our video player is not in focus
}
}
@Override
public void onTimelineChanged(Timeline timeline, Object manifest) {
}
@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
}
@Override
public void onLoadingChanged(boolean isLoading) {
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
switch (playbackState) {
case ExoPlayer.STATE_BUFFERING:
//You can use progress dialog to show user that video is preparing or buffering so please wait
break;
case ExoPlayer.STATE_IDLE:
//idle state
break;
case ExoPlayer.STATE_READY:
// dismiss your dialog here because our video is ready to play now
break;
case ExoPlayer.STATE_ENDED:
// do your processing after ending of video
break;
}
}
@Override
public void onPlayerError(ExoPlaybackException error) {
// show user that something went wrong. I am showing dialog but you can use your way
AlertDialog.Builder adb = new AlertDialog.Builder(ExoPlayerActivity.this);
adb.setTitle("Could not able to stream video");
adb.setMessage("It seems that something is going wrong.\nPlease try again.");
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish(); // take out user from this activity. you can skip this
}
});
AlertDialog ad = adb.create();
ad.show();
}
@Override
public void onPositionDiscontinuity() {
//Video is not streaming properly
Log.d("Mayur", "Discontinuity");
}
@Override
protected void onDestroy() {
super.onDestroy();
player.release(); //it is important to release a player
}
}
初心者にはこれで十分だと思います。また、このライブラリの標準オーディオおよびビデオコンポーネントは、Android 4.1(APIレベル16)でリリースされたAndroidのMediaCodec APIに依存しています。 Android 4.0以降では動作しません。
ありがとう、これは本当に役に立ちます! :) – hogar
パーフェクト、それはまさに私が1時間以上ウェブ上で探していたものです。私はあきらめようとしていた。このサンプルは、ビデオとオーディオの両方の魅力のように機能します。マニフェストに
「com.google.android.exoplayer2.ui.SimpleExoPlayerView」の代わりにカスタムビデオサーフェスで「Exoplayer」を使用することは可能ですか?私の質問https://stackoverflow.com/questions/48920678/exoplayer-how-to-know-どのURLをカスタムビデオビューで再生するか –
- 1. Googleマテリアルアイコンフォント - フルブラウザサポートのガイド?
- 2. のGithub:そのようなアンドロイドのEXOplayerとしてEXOplayer
- 3. ExoPlayerのクイックシークレット
- 4. ExoplayerとProgressBar
- 5. ExoPlayer 2移行
- 6. ExoPlayer 2プレイリストリスナー
- 7. Exoplayer v2、ライブビデオストリーム
- 8. Google Exoplayer assets/media.exolist.jsonから再生を変更する方法
- 9. android exoplayerの使い方
- 10. exoplayerのメディアソースをリフレッシュ
- 11. Ooyala SDK for Exoplayer - NoClassDefFoundError:com.ooyala.android.player.exoplayer.ExoStreamPlayer
- 12. のGradle ExoPlayerとGSON
- 13. ExoPlayer - DefaultTimeBarの親指を変更
- 14. Google Checkoutの統合 - ドキュメント/ガイド/ Googleで見つからなかった
- 15. 私はガイド次れた新しい連絡先Googleの人々API
- 16. MP4ファイルをストリームするExoPlayer
- 17. Exoplayer - ビデオストレッチを避ける
- 18. Android ExoPlayer Listener無限ループ
- 19. Exoplayer適応型hlsストリーミング
- 20. ExoPlayer 2の品質セレクタ
- 21. ExoPlayer:字幕を表示
- 22. ExoPlayerを使用したバッファオーディオライブストリーム
- 23. ExoPlayer、Loop Ended/Started listener for LoopingMediaSource
- 24. Android Widevine DASHの実装+ ExoPlayer
- 25. exoplayer(DASH)でアンドロイドアプリにYouTubeライブビデオをストリーミング
- 26. NCrawlerの例/ガイド
- 27. 後ガイドJSONArray
- 28. Amchartsのガイド
- 29. ベストプラクティスのUIガイド?
- 30. 学習ガイドJ2ME
ExoPlayerを実装している間にあなたが直面している問題を親切に言及してください。 – Mrinmoy
こんにちは、私は「始まり」の部分に問題があります。ビデオやストリームを再生するために何が必要かを知らないどのように停止、再生、一時停止する...もう一つの問題は、私は 'DefaultDataSourceFactory'コンストラクタで、私は何を取得しているといくつかのパラメータなしで何を提供しているのか分からないということです...私はかなりです全体の使用法と混乱しています...助けてください!ありがとう! – hogar
https://github.com/google/ExoPlayer、デモアプリケーションをgitからダウンロードし、そのままインポートします。例を実行し、コードを調べてください。アプリケーションを実行しているときに問題が発生した場合は、自由にコメントしてください。 – Mrinmoy