我应该尝试播放 mp3 吗

Should I Try to be Streaming mp3s

我正在 python 开发一个程序,可以播放来自各个网站的音频文件,主要是 mp3。我首先想到播放这些文件是尝试使用请求流式传输它们然后解码块,在请求 header.

中寻找某种 运行ge

所以我尝试用它做一些测试,运行 解决一些将小块数据转换为可播放形式的问题。在我深入研究并尝试修复它们之前,我在想流媒体是否有必要。那是像 vlc 这样的程序处理它的方式吗?你会如何处理它?

我做了很多 google 搜索,但没有找到任何有用的东西。

是的,如果您边下载边播放,流式传输是最佳选择。

这通常不需要您提出任何特殊要求。只需发出一个请求,解码传入的数据,对其进行缓冲,并在缓冲区已满时对流施加背压。

最终发生的是 TCP window 大小将减小,从而减慢服务器向您传输的速度,直到它与播放速率相匹配。 (在实践中,这意味着 window 非常快地猛击到零,然后突然打开几个数据包并再次回到零,因为现在的互联网连接通常比需要的快得多。)

现在,如果您失去连接,您可能仍然希望处理远程请求。也就是说,如果我听了几分钟音频然后失去了连接(例如从 WiFi 切换到 LTE 时),您的应用程序可以重新连接并请求从它停止时开始的所有字节。浏览器会这样做。当使用对长时间保持打开的连接容忍度较低的通用 HTTP CDN 时,这一点变得更加重要。通常,如果 TCP window 大小在 2 分钟内保持为零,则预计 TCP 连接将关闭。

您可以下载 Wireshark 或其他一些数据包嗅探器的副本,并观察在 VLC 中播放这些 HTTP 流之一时通过网络发生的情况。您将更好地了解引擎盖下发生的事情。