在Android中解析并播放.pls文件

use*_*958 9 android http-live-streaming android-mediaplayer

任何人都可以帮我解析如何在android中解析和播放这个.pls文件

 [playlist]
 NumberOfEntries=1
 File1=http://stream.radiosai.net:8002/
Run Code Online (Sandbox Code Playgroud)

MH.*_*MH. 13

PlsParser从NPR应用程序快速搜索得到了这个非常基本的内容,通过它的外观,它将简单地解析.pls文件并将所有嵌入的URL返回到字符串列表中.您可能希望将其作为起点.

之后,您应该能够将URL提供给MediaPlayer对象,尽管我不完全确定支持哪些格式/协议,或者在流式传输的情况下可能适用的限制.媒体播放器调用的顺序看起来有点像这样.

MediaPlayer mp = new MediaPlayer();
mp.setDataSource("http://stream.radiosai.net:8002/");
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare(); //also consider mp.prepareAsync().
mp.start();
Run Code Online (Sandbox Code Playgroud)

更新:据我所知,您几乎可以直接使用引用的代码并将其用于自己的用途.请注意,以下代码并非完整或经过测试.

public class PlsParser {
        private final BufferedReader reader;

        public PlsParser(String url) {
            URLConnection urlConnection = new URL(url).openConnection();
            this.reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
        }

        public List<String> getUrls() {
            LinkedList<String> urls = new LinkedList<String>();
            while (true) {
                try {
                    String line = reader.readLine();
                    if (line == null) {
                        break;
                    }
                    String url = parseLine(line);
                    if (url != null && !url.equals("")) {
                        urls.add(url);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return urls;
        }

        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 "";
        }
}
Run Code Online (Sandbox Code Playgroud)

完成后,您只需PlsParser使用.pls文件的url 创建一个新的,然后再调用getUrls.每个列表项都是.pls文件中的URL.在你的情况下,只是http://stream.radiosai.net:8002/.如上所述,您可以将其提供给MediaPlayer.