【问题标题】:Play media file and append it in the same time播放媒体文件并同时追加
【发布时间】:2013-05-16 15:54:42
【问题描述】:

我正在开发媒体播放器,它应该能够播放来自互联网的音频。正如我所注意到的,标准的MediaPlayer 在播放远程内容时非常不稳定:它经常无缘无故地摔倒或停止播放。 另一方面,我想实现媒体缓存。但我还没有找到任何方法从MediaPlayer 获取缓冲内容以将其保存在设备上的某个位置。

所以,我想为自己实现缓冲并让MediaPlayer 只播放本地媒体。我看到的第一种方法是将足够的媒体下载到文件中,通过MediaPlayer 开始播放该文件并继续下载其余媒体(当没有足够的媒体下载时暂停并处理类似的其他事件)。

问题是:可以同时播放文件和追加文件吗?现在我在调用MediaPlayersetDataSource时只有IllegalStateExceptions

UPD

IllegalStateException 是由无效逻辑引起的。 MediaPlayer 正在播放。

但是出现了另一个问题。

所以,首先下载 5% 的曲目,MediaPlayer 开始播放,播放这 5% 然后停止。这是一种继续玩的方式吗?

开始播放很简单:

private void startPlayback(final File file) {
    try {
        FileInputStream fs = new FileInputStream(file);
        mPlayer.setDataSource(fs.getFD());
        mPlayer.prepare();
        mPlayer.start();

    } catch (IOException e) {
        Log.e(e);
    }
}

可能有其他流类型对这种情况有用吗?

【问题讨论】:

  • 你是在 setDataSource 方法之前释放 mediaplayer .... 由于文件处于下载模式,它可能已被更改..这就是你得到 IllegalstateException 的原因
  • 谢谢!这是应用程序逻辑问题。不是发布,但类似。现在还有一个问题

标签: android android-mediaplayer


【解决方案1】:

同时附加和播放文件在某些​​设备上有效,而在其他设备上无效。所以,这不是一个解决方案。我尝试了很多方法来实现自己的缓冲和播放(请参阅Best practices for audio streaming)并决定使用 JellyBean Media API(因为我正在为 JB-device 开发)。对于 pre-JB 设备,这个问题仍然悬而未决

【讨论】:

  • 你能解释一下你是如何在JB设备中实现这个功能的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多