栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

随时随地在GStreamer管道中添加音频源和从中删除音频源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

随时随地在GStreamer管道中添加音频源和从中删除音频源

我自己找到了解决方案。我必须使用请求垫

Adder
并使用GStreamer的垫阻止功能。

这是带有一些描述的有效源代码:

#!/usr/bin/pythonimport gobject;gobject.threads_init()import gst;if __name__ == "__main__":    # First create our pipeline    pipe = gst.Pipeline("mypipe")    # Create a software mixer with "Adder"    adder = gst.element_factory_make("adder","audiomixer")    pipe.add(adder)    # Gather a request sink pad on the mixer    sinkpad1=adder.get_request_pad("sink%d")    # Create the first buzzer..    buzzer1 = gst.element_factory_make("audiotestsrc","buzzer1")    buzzer1.set_property("freq",1000)    pipe.add(buzzer1)    # .. and connect it's source pad to the previously gathered request pad    buzzersrc1=buzzer1.get_pad("src")    buzzersrc1.link(sinkpad1)    # Add some output    output = gst.element_factory_make("autoaudiosink", "audio_out")    pipe.add(output)    adder.link(output)    # Start the playback    pipe.set_state(gst.STATE_PLAYING)    raw_input("1kHz test sound. Press <ENTER> to continue.")    # Get an another request sink pad on the mixer    sinkpad2=adder.get_request_pad("sink%d")    # Create an another buzzer and connect it the same way    buzzer2 = gst.element_factory_make("audiotestsrc","buzzer2")    buzzer2.set_property("freq",500)    pipe.add(buzzer2)    buzzersrc2=buzzer2.get_pad("src")    buzzersrc2.link(sinkpad2)    # Start the second buzzer (other ways streaming stops because of starvation)    buzzer2.set_state(gst.STATE_PLAYING)    raw_input("1kHz + 500Hz test sound playing simoultenously. Press <ENTER> to continue.")    # Before removing a source, we must use pad blocking to prevent state changes    buzzersrc1.set_blocked(True)    # Stop the first buzzer    buzzer1.set_state(gst.STATE_NULL)    # Unlink from the mixer    buzzersrc1.unlink(sinkpad1)    # Release the mixers first sink pad    adder.release_request_pad(sinkpad1)    # Because here none of the Adder's sink pads block, streaming continues    raw_input("only 500Hz test sound. Press <ENTER> to stop.")


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号