我目前正在开展涉及GStreamer音频流的大学项目。 我已成功设法在客户端/服务器和TCP之间进行流式传输。
我的下一个任务是动态更改用户输入的音频流。 我尝试了以下方法:
pp.setState(State.PAUSED);
pp.setState(State.READY);
pp.unlink(src);
source = ElementFactory.make("filesrc", "src");
pp.link(source);
source.set("location", fpath);
pp.setState(State.PLAYING);
fpath是音频文件的位置。收到用户输入后,状态将设置为PAUSE,源将取消链接并添加新源。州设置为播放。
我在客户端使用了GST_DEBUG并且没有错误,缓冲区被发送到客户端但没有声音。
任何建议都将不胜感激。
答案 0 :(得分:1)
您无需取消关联并添加新来源。只需直接进入READY(无需进入PAUSED,然后进入READY,这将隐式发生),设置一个新位置并返回播放。
答案 1 :(得分:1)
您需要syncStateWithParent();
。
我将它用于不同目的,但这可以扩展到您的财产变更申请Gstreamer: Pausing/resuming video in RTP streams