我正在尝试创建一个通过 UDP 连接流式传输音乐(MP3 文件)的程序。到目前为止,我已经创建了一个程序,可以发送整个 MP3 文件并将其写入客户端计算机上的文件。然后客户端使用pygame.mixer
.
这显然不是流媒体。我一生都无法弄清楚如何将音乐流式传输到客户端。
如果有人能指出我正确的方向,那就太好了。
使用 udp 进行实时流式传输意味着类似于 rtsp 流式传输。如果您想这样做,请查看 live555。其中有一个可用的服务器 [live555mediaServer 或类似名称],您可以将其用于 rtsp 流。
Gstreamer 还可以让您只使用纯 rtp 进行基本流。类似以下管道的东西可以让你做到这一点。
gst-launch filesrc location=<yourfile> ! mp3parse ! rtpmpapay <someoptions> ! udpsink port=<someport>
你可以接收它并对其进行去抖动,然后对其进行解码,然后解码并播放它
gst-launch udpsrc port<the-some-port in the sender> ! gstrtpjitterbuffer ! rtpmpapay ! decodebin2 ! queue ! autoaudiosink
或者您可以使用 ffserver 进行流式传输。用谷歌搜索了解 rtp/rtsp 会帮助你理解这些东西。已经有很多服务器可用于发送数据。[达尔文,Live555]
还有其他形式的流媒体 [rtmp 需要 flv 文件] 以及流畅的流媒体和 HLS。RTSP 是真正的实时流媒体协议。