gpt4 book ai didi

python - 将 decodebin 与加法器一起使用

转载 作者:太空狗 更新时间:2023-10-30 03:07:24 26 4
gpt4 key购买 nike

我正在尝试创建一个具有恒定音频源(在本例中为 audiotestsrc)的音频流,我可以偶尔通过 play_file 添加来自文件(各种格式,这就是我使用 decodebin 的原因)的声音() 方法。为此,我使用了一个加法器。但是,由于某种原因,我无法正确添加第二个声音。该程序不仅无法正确播放声音,还会完全停止原来的 audiotestsrc。到目前为止,这是我的代码:

import gst; import gobject; gobject.threads_init()

pipe = gst.Pipeline()

adder = gst.element_factory_make("adder", "adder")

first_sink = adder.get_request_pad('sink%d')
pipe.add(adder)

test = gst.element_factory_make("audiotestsrc", "test")
test.set_property('freq', 100)
pipe.add(test)
testsrc = test.get_pad("src")
testsrc.link(first_sink)

output = gst.element_factory_make("alsasink", "output")
pipe.add(output)
adder.link(output)

pipe.set_state(gst.STATE_PLAYING)

raw_input('Press key to play sound')

def play_file(filename):
adder_sink = adder.get_request_pad('sink%d')

audiofile = gst.element_factory_make('filesrc', 'audiofile')
audiofile.set_property('location', filename)

decoder = gst.element_factory_make('decodebin', 'decoder')

def on_new_decoded_pad(element, pad, last):
pad.link(adder_sink)

decoder.connect('new-decoded-pad', on_new_decoded_pad)

pipe.add(audiofile)
pipe.add(decoder)
audiofile.link(decoder)

pipe.set_state(gst.STATE_PAUSED)
pipe.set_state(gst.STATE_PLAYING)


play_file('sample.wav')

while True:
pass

最佳答案

感谢 #gstreamer 上的 moch,我意识到所有加法器源都应该具有相同的格式。我修改了上面的脚本,以便获得大写字母 "audio/x-raw-int, endianness=(int)1234, channels=(int)1, width=(int)16, depth=(int)16 , signed=(boolean)true, rate=(int)11025"(示例)在加法器的每个输入之前。

关于python - 将 decodebin 与加法器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com