流由无缝的 mp3 流组成,这就是流的作用……它将分离的 mp3 拼接到一个大流中。
但是流中有轨道ID标签......如果您可以找到结束并从它们开始,或者它们是否正好在轨道开始或其他固定位置开始,则不知道。
大多数电台不会提前发送有关下一首曲目的信息只是因为他们不知道,大多数使用自动 dj 播放列表,其中服务器必须在新旧曲目之间的小间隙决定新曲目将是什么,即:它不决定那个在播放旧曲目时。
一些电台确实会发送信息(PHP 到他们的网页)下一首曲目将是什么,但大多数不会......如果他们这样做,那么这些信息肯定不在流本身中。
也许一个技巧可能是为您的听众添加延迟,
即:听众当前听到的
内容是旧的(最多几分钟或 1 个完整的曲目)
不知道如何创建这样的延迟......也许你需要记录(缓冲)它
并延迟播放(在你的应用程序中或通过一些额外的服务器)
您的(未延迟的)应用程序将(希望)通知当前歌曲何时结束
,因为新歌曲以新的 ID2/3 标签开始...当他当前但延迟的歌曲结束时,它将将您的听众切换到新的流.
说不同......在你的应用程序向前看的表面之下(相对于听众)
您需要学习 Shoutcast 和 ID-tag 协议。额外的静音检测也可能有所帮助(不是万无一失的)。
可能并不总是有效..有些电台不发送 ID 标签,其他电台则淡入淡出他们的曲目(没有沉默)......正是为了避免这些技巧。
或者类似的东西......祝我好运,我不会编写任何代码......这只是理论上的,我怀疑一些喊话开膛手使用这个技巧......我想他们使用这个来扫描多个流(并行)以查找某些预设的艺术家曲目。也许您可以通过对这些裂土器进行逆向工程来获得一些想法。因为我自己有一台收音机,所以我不喜欢这些技巧,因为他们在我支付版权费用的同时从我这里偷窃……许多开膛手会扼杀在线收音机。
最后,我不认为你的想法(如果我很好地理解它的目的)有用,无论如何
从一个流切换到另一个流,每个下一首曲目似乎都不是一种享受的体验。
好的广播电台将有一个精心制作(有序)的播放列表
,如果你把它搞砸了,你的听众会在很短的时间内得到很多情绪/风格的变化。
唯一有用的目的可能是构建一个自动开膛手,可以分散预设曲目/艺术家从大量平行观察的流中,并在播放想要的曲目时记录它们......对于许多在线电台来说,这些开膛手是一个大问题已经有 10 个以上的开膛手和在线广播已经死了……结果高质量和独立的音乐将不再可用……我们将只被 Youtube 和其他受金钱侵扰的企业集团所困……我不是期待……好奇你是否有其他有用的目的。