4

我正在尝试从 URL 流式传输音频。该代码适用于其他 URL,但在其中一个 URL 中它在OnPrepared方法中失败,返回此错误代码:(1, -2147483648)。我读过一些人说这是因为权限,但它是一个远程文件,所以我无法设置权限。我已经尝试过使用其他应用程序(如 VLC 和 iTunes)的 URL,它工作正常。我的代码在这里:

private void prepareradio() {
    player = new MediaPlayer();
    player.setAudioStreamType(MODE_WORLD_READABLE);
    try {
        player.setDataSource(url);

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    player.setOnErrorListener(new OnErrorListener(){
        public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
            Toast.makeText(getApplicationContext(),"An error happened while preparing radio",Toast.LENGTH_LONG).show();
            prepareradio();
            playe.setEnabled(true);
            hidenot();
            return false;
        }
    });
4

3 回答 3

3

我在 Froyo & Gingerbread 上也遇到了同样的错误。在更高级别的 Android 中,相同的视频播放效果很好。最后经过大量研究,尝试将 Https Url 更改为 Http Url & Bingo。它解决了我的问题。我使用的是亚马逊 S3 服务器,因此只需将 url 中的“https”替换为“http”就足够了。

  videoUrl= videoUrl.replaceFirst("https", "http"); 

PS:为了支持旧版本,如果您使用 H.264,请确保视频是基线编码的。

于 2013-05-22T10:02:17.973 回答
2

如果您在 Android 3.1 之前的设备上进行测试,您可能无法播放 AACP(如您的流 (AAC+) 流的信息页面所示)。

您的信息流的信息页面:
在此处输入图像描述

为了找出您可以在目标设备上播放哪些流,请查看官方文档:http: //developer.android.com/reference/android/media/AudioManager.html

如果您正在寻找如何处理 aacp 结帐,请执行以下操作:
https ://stackoverflow.com/a/8833346/200272

于 2012-05-29T10:16:29.180 回答
0

如我所见,mediaPlayer 不支持此流。Android 支持 AAC LC/LTP,但您的流是 aacp。我认为这可能是您问题的根本原因。

于 2012-05-29T09:02:18.397 回答