gpt4 book ai didi

android - ICS 上的流式音频问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:58 25 4
gpt4 key购买 nike

我正在使用音频流在设备上播放 MP3 文件,在 ICS 出现之前没有遇到任何问题。然后我认为这可能是格式支持问题,所以我尝试使用以下代码来处理 OGG 文件:

MediaPlayer mmp= MediaPlayer.create(context,
Uri.parse("http://vorbis.com/music/Epoq-Lepidoptera.ogg"));
mmp.start();

这适用于较早的操作系统版本,但在 ICS 上失败。我还尝试使用 onPreparesListener atc 使用 setDataSource(this, uri) 创建媒体播放器,但仍然出现相同的错误:

04-08 09:52:12.459: D/MediaPlayer(541): Couldn't open file on client side, trying server side04-08 09:52:12.489: E/MediaPlayer(541): Unable to to create media player04-08 09:52:12.529: D/MediaPlayer(541): create failed:04-08 09:52:12.529: D/MediaPlayer(541): java.io.IOException: setDataSource failed.: status=0x8000000004-08 09:52:12.529: D/MediaPlayer(541):     at android.media.MediaPlayer._setDataSource(Native Method)04-08 09:52:12.529: D/MediaPlayer(541):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:844)04-08 09:52:12.529: D/MediaPlayer(541):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:806)04-08 09:52:12.529: D/MediaPlayer(541):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:761)04-08 09:52:12.529: D/MediaPlayer(541):     at android.media.MediaPlayer.create(MediaPlayer.java:695)04-08 09:52:12.529: D/MediaPlayer(541):     at android.media.MediaPlayer.create(MediaPlayer.java:676)

所以我的问题是如何在 ICS 上使用 MediaPlayer 流式传输音频文件?有没有人有工作代码或者可能必须有一些特定的文件格式和编码?但糟糕的是新操作系统版本不向后兼容......

最佳答案

我同样遇到了同样的问题,所以我换档改用这个,这对我来说效果很好。但是,您必须将声音文件保存在 res/assets 文件夹中。

        try {
AssetFileDescriptor afd = getAssets().openFd("mysound.mp3");
mPlayer = new MediaPlayer();
mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mPlayer.prepare();
mPlayer.start();
}
catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
Log.d(TAG, "SecurityException: " + e.getMessage());
}

然后您将以通常的方式释放资源:

        if(mPlayer != null) {
if(mPlayer.isPlaying()) mPlayer.stop();
mPlayer.release();
mPlayer = null;
}

希望这对你也有用。

关于android - ICS 上的流式音频问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061962/

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