小智 19
首先使用以下行来实例化您的ExoPlayer:
exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs);
Run Code Online (Sandbox Code Playgroud)
如果您只想播放音频,可以使用以下值:
RENDERER_COUNT = 1 //since you want to render simple audio
minBufferMs = 1000
minRebufferMs = 5000
Run Code Online (Sandbox Code Playgroud)
两个缓冲区值都可以根据您的要求进行调整
现在您必须创建一个DataSource.当您想要流式mp3时,您可以使用DefaultUriDataSource.您必须传递Context和UserAgent.为了简单起见,请播放本地文件并将null作为userAgent传递:
DataSource dataSource = new DefaultUriDataSource(context, null);
Run Code Online (Sandbox Code Playgroud)
然后创建sampleSource:
ExtractorSampleSource sampleSource = new ExtractorSampleSource(
uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize);
Run Code Online (Sandbox Code Playgroud)
uri指向您的文件,作为Extractor,如果您想播放mp3,可以使用简单的默认Mp3Extractor.requestedBufferSize可以根据您的要求再次调整.以5000为例.
现在,您可以使用示例源创建音轨渲染器,如下所示:
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
Run Code Online (Sandbox Code Playgroud)
最后在exoPlayer实例上调用prepare:
exoPlayer.prepare(audioRenderer);
Run Code Online (Sandbox Code Playgroud)
要开始播放通话:
exoPlayer.setPlayWhenReady(true);
Run Code Online (Sandbox Code Playgroud)
以下是使用新的ExoPlayer 2 API和它的方法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
Run Code Online (Sandbox Code Playgroud)
然后创建你的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
Run Code Online (Sandbox Code Playgroud)
准备好后准备和玩:
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Run Code Online (Sandbox Code Playgroud)
对于DASH,您将使用DashMediaSource而不是ExtractorMediaSource.
| 归档时间: |
|
| 查看次数: |
11522 次 |
| 最近记录: |