在PLAYING状态下更改Gstreamer源

1 投票
2 回答
1397 浏览
提问于 2025-04-20 15:22

大家好,我想知道如何在我的数据处理流程中切换不同的数据源,而不改变状态。例如,如果我有:

数据源 1

 filesrc location=file1 ! decodebin ! autovideosink

数据源 2

 filesrc location=file2 ! decodebin ! autovideosink

数据源 3

 filesrc location=file3 ! decodebin ! autovideosink

我想实现的效果就像在电视上切换频道一样。有没有办法动态地改变位置属性?我搜索了很多次,但没有找到具体的内容。如果你能给我一些 Cpython 的代码示例,我会非常感激。

2 个回答

1

我觉得最好的办法就是结束旧的进程,然后重新启动一个新的。

在处理长时间运行的程序和各种不同文件的情况下,你得依赖很多不同的GStreamer组件来确保它们能自己正常清理。

1

你不能动态地改变文件的来源位置,不过你可以稍微调整一下你的逻辑。与其直接使用文件来源,不如使用一个叫做fdsrc的东西,然后写一个单独的程序,这个程序从你的文件1中读取数据,并把这些数据传送到fdsrc的文件描述符中。这样,当你想要从文件1切换到文件2或文件3时,你只需要告诉你的程序开始从文件2或文件3读取数据就可以了。

希望这对你有帮助!

撰写回答