如何在 Gstreamer 中流式传输音频 (Python)
How to stream audio in Gstreamer (Python)
我正在制作一个 python 应用程序,它使用 ibm cloud Watson TTS 将文本转换为音频,然后 return 使用
的音频
content = watson_tts.synthesize(text, voice), accept=format).get_result().content
然后我想获取此内容并使用 Gstreamer 进行流式传输,而不将其保存到文件中。
我知道如何使用这个从 uri 播放文件:
player = Gst.ElementFactory.make("playbin", "player")
player.set_property("uri", uri)
player.set_state(Gst.State.PLAYING)
但这不是我想要的,
我想要的是无需下载就可以直接播放音频
执行后
content = watson_tts.synthesize(text, voice), accept=format).get_result()
合成音频已经 "downloaded" 来自 IBM 的服务,所以我认为最好说“...不保存到文件”而不是 "what I want is being able to stream the audio directly without downloading"。
无论如何...为了 "programmatically" 使用来自 Python 的 content
对象的(音频)字节馈送 gstreamer 的管道,您可以利用 appsrc
元素。
例如管道可以这样实现
它会生成 MPEG Transport Stream 和 aac
通过 UDP 流式传输的编码音频。
我正在制作一个 python 应用程序,它使用 ibm cloud Watson TTS 将文本转换为音频,然后 return 使用
的音频content = watson_tts.synthesize(text, voice), accept=format).get_result().content
然后我想获取此内容并使用 Gstreamer 进行流式传输,而不将其保存到文件中。 我知道如何使用这个从 uri 播放文件:
player = Gst.ElementFactory.make("playbin", "player")
player.set_property("uri", uri)
player.set_state(Gst.State.PLAYING)
但这不是我想要的, 我想要的是无需下载就可以直接播放音频
执行后
content = watson_tts.synthesize(text, voice), accept=format).get_result()
合成音频已经 "downloaded" 来自 IBM 的服务,所以我认为最好说“...不保存到文件”而不是 "what I want is being able to stream the audio directly without downloading"。
无论如何...为了 "programmatically" 使用来自 Python 的 content
对象的(音频)字节馈送 gstreamer 的管道,您可以利用 appsrc
元素。
例如管道可以这样实现
它会生成 MPEG Transport Stream 和 aac
通过 UDP 流式传输的编码音频。