Python Gstreamer从mic录制音频并立即播放

2024-03-29 13:59:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从麦克风录音,并立即播放它从同一台电脑的扬声器使用gstreamer。换句话说,在输入和输出记录a之间建立一个连接 很少的样本,并立即播放。我可以用以下代码将音频录制到ogg文件:

#!/usr/bin/env python
import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst, Gtk
GObject.threads_init()
Gst.init(None)

pipeline = Gst.Pipeline()

autoaudiosrc = Gst.ElementFactory.make("autoaudiosrc", "autoaudiosrc")
audioconvert = Gst.ElementFactory.make("audioconvert", "audioconvert")
vorbisenc = Gst.ElementFactory.make("vorbisenc", "vorbisenc")
oggmux = Gst.ElementFactory.make("oggmux", "oggmux")
filesink = Gst.ElementFactory.make("filesink", "filesink")
url = "1.ogg"
filesink.set_property("location",url)
pipeline.add( autoaudiosrc)
pipeline.add( audioconvert)
pipeline.add( vorbisenc)
pipeline.add( oggmux)
pipeline.add( filesink)

autoaudiosrc.link( audioconvert)
audioconvert.link( vorbisenc)
vorbisenc.link( oggmux)
oggmux.link( filesink)

pipeline.set_state(Gst.State.PLAYING)
Gtk.main()

但是我怎么能一边录音一边播放录音呢?在


Tags: importaddmakepipelinelink录音giogg
1条回答
网友
1楼 · 发布于 2024-03-29 13:59:03

在audioconvert之后,您可以添加一个tee和queue来拥有一个新的分支。 你可以有这样的东西:

autoaudiosrc ! audioconvert ! tee name="source" ! queue ! vorbisenc ! oggmux ! filesink location=file.ogg source. ! queue ! audioconvert ! alsasink

相关问题 更多 >