使用 ExoPlayer

实例化你的 ExoPlayer:

exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs);

要仅播放音频,你可以使用以下值:

RENDERER_COUNT = 1 //since you want to render simple audio
minBufferMs = 1000 
minRebufferMs = 5000

两个缓冲区值都可以根据你的要求进行调整。

现在你必须创建一个 DataSource。如果要流式传输 mp3,可以使用 DefaultUriDataSource。你必须传递 Context 和 UserAgent。为了简单起见,请播放本地文件并将 null 作为 userAgent 传递:

DataSource dataSource = new DefaultUriDataSource(context, null);

然后创建 sampleSource:

ExtractorSampleSource sampleSource = new ExtractorSampleSource(
                uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize);

uri 指向你的文件,作为 Extractor,如果你想播放 mp3,可以使用简单的默认 Mp3Extractor。requestedBufferSize 可以根据你的要求再次调整。以 5000 为例。

现在,你可以使用示例源创建音轨渲染器,如下所示:

MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);

最后在 exoPlayer 实例上调用 prepare:

exoPlayer.prepare(audioRenderer);

要开始播放通话:

exoPlayer.setPlayWhenReady(true);