Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以在不使用本地文件的情况下从服务器直播音频?_Python_Server_Audio Streaming - Fatal编程技术网

Python 有没有一种方法可以在不使用本地文件的情况下从服务器直播音频?

Python 有没有一种方法可以在不使用本地文件的情况下从服务器直播音频?,python,server,audio-streaming,Python,Server,Audio Streaming,我正在寻找一种从服务器持续流式传输音频的方法,主要问题是服务器端的代码,它将接收许多url来流式传输音频。也会有这样的情况,url被实时交换,而一段新的音频被流式传输。我还没有找到一个解决方案,不涉及我下载每个文件,然后流,这将阻碍直播功能 我曾尝试将vlc用于python,但它不允许更改当前正在传输的url。我也尝试过使用pyaudio,但我无法获得正确的音频格式,更不用说交换音频源了 示例链接fairwarning it'll autoplay:要生成发送给客户端的连续流,您需要将此项目分成

我正在寻找一种从服务器持续流式传输音频的方法,主要问题是服务器端的代码,它将接收许多url来流式传输音频。也会有这样的情况,url被实时交换,而一段新的音频被流式传输。我还没有找到一个解决方案,不涉及我下载每个文件,然后流,这将阻碍直播功能

我曾尝试将vlc用于python,但它不允许更改当前正在传输的url。我也尝试过使用pyaudio,但我无法获得正确的音频格式,更不用说交换音频源了


示例链接fairwarning it'll autoplay:

要生成发送给客户端的连续流,您需要将此项目分成两半

播放 您需要一些东西来将源流从压缩格式解码为非压缩标准格式,您可以对其进行操作。。。原始PCM样本。使用一个子进程并将其输出到STDOUT,以便可以在Python脚本中获取该数据。如果需要,您可以使用VLC,但FFmpeg非常简单:

ffmpeg -i "http://example.com/stream" -ar 48000 -ac 2 -f f32le -acodec pcm_f32le -
这将以48 kHz的立体声32位浮点输出原始PCM到标准输出。使用此标准格式后,您可以任意加入流。因此,当您播放完一个流后,只需停止该进程,切换到下一个,然后开始播放新流中的示例

编码 您希望创建一个PCM流,然后您可以使用一些外部编码器重新编码,基本上与播放时所做的相反。同样,FFmpeg可以为您做一些事情:

ffmpeg -f f32le -ar 48000 -ac 2 - -f opus -acodec libopus icecast://...

现在,您将注意到这里的输出示例,我建议将其发送到Icecast。Icecast是一款不错的流媒体服务器,您可以使用它。如果您希望直接通过HTTP输出,您可以。但是,如果您要向多个听众播放此流,我建议您让Icecast或类似公司为您处理。

您能详细说明一下吗?我假设您不仅希望在服务器上本地播放流,还希望对其进行编码并将其发送到某个地方?因此,最终目标是将交换url的工作卸载到服务器,服务器将在服务器上获取当前的实时url并将其流式传输到客户端。我一直无法找到一种方法来避免下载音频,然后重新编码以发送给客户端。好吧,你需要重新编码它。但是,你不必下载它。您可以通过流传输。在我可以提供一致的流并更改流源的情况下,如何做到这一点?您能否回答您将此流发送到何处的问题?该怎么办?猛冲还有别的吗?请注意,除了在Python中执行此操作之外,还有Liquidsoap。我个人并不喜欢Liquidsoap,因为我发现它不可靠,而且很难使用。但是,如果你想要所有这些的代码,这里是我几年前写的一些: