0

这里有一个 m3u 文件。当我下载文件并在 iTunes 中打开它时,程序成功开始播放流音频并向我显示艺术家姓名和歌曲标题。此外,iTunes 会发送通知更改曲目并显示艺术家姓名和歌曲名称!

我想知道 iTunes 是怎么猜到这个的?该文件没有艺术家列表,它只有流媒体音频的链接。当我去文件中提到的这个地址时,我可以看到一个包含一些信息的网页。iTunes 会解析此页面并查找艺术家姓名吗?不要这么想...

谁能向我解释如何从 m3u 文件中获取歌曲信息,该文件仅包含指向 iTunes 之类的音频流的链接?Obj-C 或 Swift 中如何以编程方式执行此操作的示例代码将不胜感激!

4

1 回答 1

2

它来自音频流本身(使用 Icecast 协议),而不是来自 m3u 文件。您可以通过打开 m3u 文件、将 HTTP url 放入其中并将其放入 VLC 来证明这一点,您会看到轨道数据仍然存在。

关于这个问题有更多信息:如何提取嵌入在三星智能电视上的 Icecast 音频(广播)流中的流式“正在播放”数据

关于这个问题还有一些 obj-c 特定的东西:Getting SHOUTcast metadata on the Mac

并在此处解释协议:http ://www.smackfu.com/stuff/programming/shoutcast.html

另外,如果您对我如何确定流是 Icecast 感到好奇,我打开 Wireshark 并通过“ip.src == 79.120.77.11”对其进行过滤,然后启动流,并在前几个数据包之一中有一些数据以“icy-notice”开头,并提到了 Shoutcast。几个数据包之后还有广播电台的标题。

于 2015-05-18T19:06:50.850 回答