在PLAYING状态下更改Gstreamer源
大家好,我想知道如何在我的数据处理流程中切换不同的数据源,而不改变状态。例如,如果我有:
数据源 1
filesrc location=file1 ! decodebin ! autovideosink
数据源 2
filesrc location=file2 ! decodebin ! autovideosink
数据源 3
filesrc location=file3 ! decodebin ! autovideosink
我想实现的效果就像在电视上切换频道一样。有没有办法动态地改变位置属性?我搜索了很多次,但没有找到具体的内容。如果你能给我一些 C
或 python
的代码示例,我会非常感激。
2 个回答
1
我觉得最好的办法就是结束旧的进程,然后重新启动一个新的。
在处理长时间运行的程序和各种不同文件的情况下,你得依赖很多不同的GStreamer组件来确保它们能自己正常清理。
1
你不能动态地改变文件的来源位置,不过你可以稍微调整一下你的逻辑。与其直接使用文件来源,不如使用一个叫做fdsrc的东西,然后写一个单独的程序,这个程序从你的文件1中读取数据,并把这些数据传送到fdsrc的文件描述符中。这样,当你想要从文件1切换到文件2或文件3时,你只需要告诉你的程序开始从文件2或文件3读取数据就可以了。
希望这对你有帮助!