3

我目前正在从事涉及 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 并且没有错误,缓冲区被发送到客户端但没有声音。

任何建议,将不胜感激。

4

2 回答 2

1

您无需取消链接并添加新来源。只需直接进入 READY(无需进入 PAUSED 再进入 READY,这将隐含地发生),设置新位置并返回播放。

于 2012-05-02T08:20:22.763 回答
1

你需要syncStateWithParent();

我将它用于不同的目的,但这可以扩展到您在属性更改Gstreamer 上的应用程序:暂停/恢复 RTP 流中的视频

于 2012-08-19T16:41:27.400 回答