android - 在 Android 中解析和播放 .pls 文件

标签 android http-live-streaming android-mediaplayer

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

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

最佳答案

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

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

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。

关于android - 在 Android 中解析和播放 .pls 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277143/

相关文章:

javascript - 如何为 hls.js 创建自定义加载器?

java - 奇怪的 URI 行为 java/setDataSource/MediaPlayer

android-mediaplayer - Android : MediaPlayer. setDataSource(FileDescriptor fd) vs MediaPlayer.setDataSource(FileDescriptor fd,长偏移量,长长度)

android - 仅适用于 Android Studio 中设计预览选项卡的 xml View 的占位符

android - 如何在 android 中从 omxcodec 转储 yuv 缓冲区

android - 如何从Soundcloud获取音频?

android - 如何为 JSON 对象中的 Firebase 云消息传递发送 "event_time"?

ios - 使用带有自签名证书的 MPMoviePlayerController

video - 加密 HLS 文件有什么意义?

Android:恢复 Activity