gpt4 book ai didi

java - MediaPlayer android 流广播不立即启动或根本不启动

转载 作者:行者123 更新时间:2023-12-02 13:39:31 25 4
gpt4 key购买 nike

我使用这个代码:

mediaPlayer.setDataSource("http://some online radio");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.prepareAsync();

onPrepared方法是:

if (mediaPlayer != null) {
mediaPlayer.start();
}

一般来说,问题是:然后我运行这段代码,播放不会立即开始,而是大约10秒后开始。 + 有些流根本无法启动,在模拟器上它的工作效果比在设备上好一点,但仍然如此。这取决于具体的 radio ,有些更好,有些很差。

我认为问题在于准备和缓冲。可以从这个流中创建一个InputStream并写入一些临时文件/缓冲区,并在MediaPlayer中读取/播放这个文件,但如何实现它是,还不清楚..请帮忙

如果您先执行mp.prepare,然后执行mp.start - 结果是相同的

在装有 Chrome 的电脑上,我尝试使用的所有广播流都会立即开始播放

抱歉我的英语不好,谢谢。

最佳答案

如果有人出于同样的原因来到这里(以防万一),解决方案是 ExoPlayer

类似这样的事情:

 LoadControl loadControl = new DefaultLoadControl();


bandwidthMeter = new DefaultBandwidthMeter();
extractorsFactory = new DefaultExtractorsFactory();

trackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);

trackSelector = new DefaultTrackSelector(trackSelectionFactory);
defaultBandwidthMeter = new DefaultBandwidthMeter();
dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "mediaPlayerSample"), defaultBandwidthMeter);


mediaSource = new ExtractorMediaSource(Uri.parse(radioURL), dataSourceFactory, extractorsFactory, null, null);

player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
player.prepare(mediaSource);
player.setPlayWhenReady(true);

但是你最好在这里检查示例的实际版本:https://github.com/google/ExoPlayer

关于java - MediaPlayer android 流广播不立即启动或根本不启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42814010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com