如何在安卓设备上播放 .pls 文件?

3

安卓媒体播放器: 我能够从 URL 播放 .mp3 文件,但播放 .pls 文件时会出现错误。

代码:

try{
String url=".pls url";
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
}catch(Exception 
System.out.println("@@ Exception while playing: "+e);
mediaPlayer .release();
mediaPlayer = null;
}

错误:

09-12 12:44:04.026: E/MediaPlayer(704): error (1, -2147483648)
09-12 12:44:04.026: I/System.out(704): @@ Exception while playing: java.io.IOException: Prepare failed.: status=0x1
3个回答

1
如果您所说的“pls”是播放列表信息文件,那么媒体播放器无法处理“pls”文件。
.pls文件不是媒体文件。因此,您无法播放.pls文件。通常情况下,.pls文件由应用程序处理,并从pls文件中提取信息并播放指向pls的音乐文件。

在Textpad中打开(提取)了.pls文件,并找到了IP地址(File1=value)。如何使用指向.pls文件的IP地址播放音频。想要从URL播放.pls。 - user1664942
我从未尝试过,但我猜你可以直接使用setdatsource函数通过URL设置数据源。 - nandeesh
当我尝试播放IPAddress.songs.pls时,出现了错误提示。但是我能够从同一网站播放.mp3文件。 - user1664942
就像我之前说的,你不能直接将 pls 文件格式的 URL 提供给 MediaPlayer。你需要解析 pls 格式,然后从该文件中提取 mp3 URL,并将其传递给 MediaPlayer。 - nandeesh
我在接收到的 .pls 文件中找不到任何类似于 .mp3 的东西。.pls 包含 IP。 - user1664942
如何从 .pls 文件中获取 .mp3 文件,请提供解决方案,我也遇到了同样的问题。 - Harsha

0
String musicUlrPath;
LinkedList<String> streamingUrlList;

        streamingUrlList=new LinkedList<String>();

    ExecuteArrayList executeArrayList=new ExecuteArrayList();
                    executeArrayList.execute("blank");



class ExecuteArrayList extends AsyncTask<String, String, String>

        {

            @Override
            protected String doInBackground(String... params) {
                // TODO Auto-generated method stub
                try {

                streamingUrlList=getStreamingUrl(pathFromJson);//you are geting path during json response 

                } catch (Exception e) {
                        e.printStackTrace();

                       }
                return null;

            }


            @Override
            protected void onPostExecute(String result) {
                // TODO Auto-generated method stub


                musicUlrPath=(streamingUrlList.get(0));


            }

        }



    public LinkedList<String> getStreamingUrl(String url) {

        Log.i(LOGTAG, "get streaming url");
        final BufferedReader br;
        String murl = null;
        LinkedList<String> murls = null;
        try {
            URLConnection mUrl = new URL(url).openConnection();
            br = new BufferedReader(
                    new InputStreamReader(mUrl.getInputStream()));
            murls = new LinkedList<String>();
            while (true) {
                try {
                    String line = br.readLine();

                    if (line == null) {
                        break;
                    }
                    murl = parseLine(line);
                    if (murl != null && !murl.equals("")) {
                        murls.add(murl);

                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.i(LOGTAG, "url to stream :" + murl);
        return murls;
    }

    private String parseLine(String line) {
        if (line == null) {
            return null;
        }
        String trimmed = line.trim();
        if (trimmed.indexOf("http") >= 0) {
            return trimmed.substring(trimmed.indexOf("http"));
        }
        return "";
    }

现在设置提取的路径

mediaPlayer.setDataSource(musicUlrPath);

-1
Extract pls file in notepad , It will show like this
playlist]
File1=Alternative\everclear -URL
Title1=Everclear - So Much For The Afterglow
Length1=233    
File2=Comedy\Weird Al - Everything You Know Is Wrong.mp3   
.
.   
NumberOfEntries=5    
Version=2.

Use that URL in Media player.It will work.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接