-->

如何录制GStreamer的音频按照预先定义的时间?(How to record audio in

2019-10-19 06:02发布

我有蟒蛇的GStreamer - 1.0的代码,使用“autoaudiosrc”元素录制音频。 我的问题是阻止一些“预定”秒后管道,最好我想将其添加到gstelement格式。

目前的管道用来记录:

gst-launch-1.0 autoaudiosrc num-buffers=100 ! audioconvert ! vorbisenc ! oggmux ! filesink location="sit.ogg"

相应Python代码

import sys, os


import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst, Gtk
GObject.threads_init()
Gst.init(None)

pipeline = Gst.Pipeline()
current_state = "STATE_NULL"

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()

Answer 1:

是。 您可以启动一个定时器(g_timeout_add或通过gst_clock_new_single_shot_id使用GStreamer的时钟)。 当计时器/时钟回调火灾,发送EOS事件管道(gst_element_send_event(管道,gst_event_new_eos())。



文章来源: How to record audio in gstreamer for pre-defined time?