【问题标题】:Parse and Play a .pls file in Android在 Android 中解析和播放 .pls 文件
【发布时间】:2011-11-26 08:08:15
【问题描述】:

谁能帮我在android中解析和播放这个.pls文件

 [playlist]
 NumberOfEntries=1
 File1=http://stream.radiosai.net:8002/

【问题讨论】:

    标签: android http-live-streaming android-mediaplayer


    【解决方案1】:

    通过快速搜索,我们从 NPR 应用程序中找到了这个非常基本的PlsParser,从外观上看,它只会解析 .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();
    

    更新:据我所知,您几乎可以从字面上获取引用的代码并将其用于您自己的用途。请注意,下面的代码绝不是完整的或经过测试的。

    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 "";
            }
    }
    

    一旦你有了它,你可以简单地使用 .pls 文件的 url 创建一个新的PlsParser,然后调用getUrls。每个列表项都是 .pls 文件中的 url。在你的情况下,这只是http://stream.radiosai.net:8002/。如前所述,您可以将其提供给 MediaPlayer。

    【讨论】:

    • 我不太确定您遇到了什么问题?我添加了一些与实际解析相关的代码来帮助您入门。如果这不是您想要的,请详细说明您要完成的工作。
    猜你喜欢
    • 2014-07-25
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2016-04-28
    • 2012-01-17
    相关资源
    最近更新 更多