5
我寫了一個小小的Python腳本,它使用一個Adder
插件將兩個源碼流混合在一起。將音頻源添加到GStreamer管道中去除音頻源
啓動程序後,您會聽到audiotestsrc
插件生成的1kHz音調。當您按Enter鍵時,另一個500Hz的測試音連接到Adder
,以便您可以一起聽到它們。 (順便說一下,我真的不明白爲什麼我應該再次將管道設置爲播放狀態以聽取混音。是否有任何方法可以插入新聲源而不必重新啓動管道?)
當你再次按下Enter鍵,應從混音中刪除1kHz音調,並且500Hz音調應該繼續播放,但是我不再聽到任何東西。作爲最後一行,我在調試輸出中獲得pulse pulsesink.c:528:gst_pulsering_stream_underflow_cb:<pulseaudio_output> Got underflow
。我真的不知道接下來要做什麼。
下面是完整的源代碼:
#!/usr/bin/python
# On-the-go source removal doesn't work this way with GStreamer. Why?
import gobject;
gobject.threads_init()
import gst;
if __name__ == "__main__":
pipe = gst.Pipeline("mypipe")
adder = gst.element_factory_make("adder","audiomixer")
pipe.add(adder)
buzzer = gst.element_factory_make("audiotestsrc","buzzer")
buzzer.set_property("freq",1000)
pipe.add(buzzer)
pulse = gst.element_factory_make("pulsesink", "pulseaudio_output")
pipe.add(pulse)
buzzer.link(adder)
adder.link(pulse)
pipe.set_state(gst.STATE_PLAYING)
raw_input("1kHz test sound. Press <ENTER> to continue.")
buzzer2=gst.element_factory_make("audiotestsrc","buzzer2")
buzzer2.set_property("freq",500)
pipe.add(buzzer2)
buzzer2.link(adder)
pipe.set_state(gst.STATE_PLAYING)
raw_input("1kHz + 500Hz test sound playing simoultenously. Press <ENTER> to continue.")
buzzer.unlink(adder)
pipe.set_state(gst.STATE_PLAYING)
raw_input("Only 500Hz test sound. Press <ENTER> to stop.")