【发布时间】:2011-11-26 08:08:15
【问题描述】:
谁能帮我在android中解析和播放这个.pls文件
[playlist]
NumberOfEntries=1
File1=http://stream.radiosai.net:8002/
【问题讨论】:
标签: android http-live-streaming android-mediaplayer
谁能帮我在android中解析和播放这个.pls文件
[playlist]
NumberOfEntries=1
File1=http://stream.radiosai.net:8002/
【问题讨论】:
标签: android http-live-streaming android-mediaplayer
通过快速搜索,我们从 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。
【讨论】: