私は現在、AndroidのExoPlayerを介してDashを利用するアプリケーションを開発しようとしています。
まず、デモプロジェクトを実行していますが、mp3などをストリーミングできるExoPlayerの単純な動作インスタンスを作成することすら問題があります。
私が適応して構築できる非常に単純なexoplayerインスタンスを動作させることに関して、または利用可能なドキュメントがほとんどないように思われるので、私が従うことができるより多くのリファレンスまたはガイドのリードがある場合は、誰かが与えることができる助けを本当に感謝します。
助けてくれてありがとう!
まず、次の行を使用してExoPlayerをインスタンス化します。
exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs);
オーディオのみを再生する場合は、次の値を使用できます。
RENDERER_COUNT = 1 //since you want to render simple audio
minBufferMs = 1000
minRebufferMs = 5000
両方のバッファ値は、要件に応じて微調整できます
次に、データソースを作成する必要があります。 mp3をストリーミングしたい場合は、DefaultUriDataSourceを使用できます。 ContextとUserAgentを渡す必要があります。簡単にするには、ローカルファイルを再生し、userAgentとしてnullを渡します。
DataSource dataSource = new DefaultUriDataSource(context, null);
次に、sampleSourceを作成します。
ExtractorSampleSource sampleSource = new ExtractorSampleSource(
uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize);
uriはファイルを指します。mp3を再生したい場合は、Extractorとして単純なデフォルトのMp3Extractorを使用できます。 requestedBufferSizeは、要件に応じて再度調整できます。たとえば、5000を使用します。
これで、次のようにサンプルソースを使用してオーディオトラックレンダラーを作成できます。
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
最後に、exoPlayerインスタンスでprepareを呼び出します。
exoPlayer.prepare(audioRenderer);
再生通話を開始するには:
exoPlayer.setPlayWhenReady(true);
新しいExoPlayer2APIとSimpleExoPlayer
を使用してこれを行う方法は次のとおりです。
最初にプレーヤーを作成します。
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, bandwidthMeter);
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
DefaultTrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
LoadControl loadControl = new DefaultLoadControl();
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector, loadControl);
player.addListener(...); // To receive events from the player
次に、MediaSource
を作成します。 MP3の場合、ExtractorMediaSource
を使用できます。
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
Uri uri = Uri.parse(mp3UriString);
Handler mainHandler = new Handler(Looper.getMainLooper());
MediaSource mediaSource = new ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, mainHandler, mediaSourceListener); // Listener defined elsewhere
次に、準備ができたら準備してプレイします。
player.prepare(mediaSource);
player.setPlayWhenReady(true);
DASHの場合、ExtractorMediaSource
の代わりに DashMediaSource を使用します。