如下所示:
首先,您可能需要确认是否在使用ExoPlayer版本24. 针对此异常,ExoPlayer团队修复它并发布了版本25.更高的版本。如果您还没有升级,请考虑升级。
如果您正在使用最新版本的ExoPlayer,那么您应该考虑调整ExoPlayer缓冲参数。这是因为ExoPlayer使用的默认缓冲大小可能与您的设备/代理/网络不兼容,因此会导致AudioTrack下溢。要修复这个问题,请尝试将以下代码添加到ExoPlayer实例初始化中:
TrackSelector trackSelector = new DefaultTrackSelector(context); ... DefaultLoadControl loadControl = new DefaultLoadControl.Builder() .setAudioBufferSize( /*audioBufferSize: */ ) .setBufferDurationsMs( /*minimumBufferMs: */ , /*maximumBufferMs: / , / bufferForPlaybackMs: / , / bufferForPlaybackAfterRebufferMs: */ ) .build();
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector, loadControl);
请记得替换注释的值。
通过更新和调整ExoPlayer缓冲参数,您应该能够避免AudioTrack下溢异常。