gpt4 book ai didi

rust - 在GStreamer管道中将tee的单个分支延迟n秒

转载 作者:行者123 更新时间:2023-12-03 11:45:04 25 4
gpt4 key购买 nike

假定如下所示的管道:

videotestsrc +-> timeoverlay +-> tee +-> queue +-> autovideosink
|
+-> queue +-> autovideosink
tee的第一个分支必须充当传递对象,只是让样本流到管道的其余部分。第二个分支必须非常相似,唯一的区别是第二个分支相对于第一个分支的延迟应为n秒。
不幸的是,我无法独自实现这一目标。
我试过设置第二个分支的 max-size-*min-threshold-timequeue属性(如 this答案中所建议),但是没有用。
我也尝试通过 queue.get_sink_pads().first().unwrap().set_offset(-5000000000)修改第二个分支的运行时间,但是,这也没有用。
我还尝试附加一个填充探针,并将通过第二个分支的 queue的接收器填充的缓冲区重新时间戳记为n秒,以期将来希望它们保留在 queue上,直到管道的运行时间 catch 了它也没有用(我想那是没有用的,因为即使 tee元素创建了单独的分支,缓冲区仍然通过引用共享)。
我在下面的代码段中附加了显示我所取得的进展的代码(说实话,这并不多)。
是否有可能实现这种行为而不必从头开始实现插件?

为了尝试实现这种行为,我首先实例化了基本元素...
let videotestsrc = ElementFactory::make("videotestsrc", None)?;
let timeoverlay = ElementFactory::make("timeoverlay", None)?;
let tee = ElementFactory::make("tee", None)?;
...然后我实例化了管道...
let pipeline = Pipeline::new(None);
pipeline.add(&videotestsrc)?;
pipeline.add(&timeoverlay)?;
pipeline.add(&tee)?;
...然后我创建了分支机构...
{
let queue = ElementFactory::make("queue", None)?;
let autovideosink = ElementFactory::make("autovideosink", None)?;

pipeline.add(&queue)?;
pipeline.add(&autovideosink)?;

tee.link(&queue)?;
queue.link(&autovideosink)?;
}

{
let queue = ElementFactory::make("queue", None)?;
let autovideosink = ElementFactory::make("autovideosink", None)?;

// queue.set_property_from_str("leaky", "downstream");
// queue.set_property("max-size-buffers", &0u32)?;
// queue.set_property("max-size-bytes", &0u32)?;
// queue.set_property("max-size-time", &0u64)?;
// queue.set_property("min-threshold-time", &5000000000u64)?;

pipeline.add(&queue)?;
pipeline.add(&autovideosink)?;

tee.link(&queue)?;
queue.link(&autovideosink)?;
}
关于第二个分支的评论来自我没有成功的尝试。

最佳答案

I also tried to modify the running time of the second branch through queue.get_sink_pads().first().unwrap().set_offset(-5000000000) but alas, it also didn't work.


那几乎是解决方案:设置一个正值,它应该起作用。您目前正在将其转移到过去。此外,请确保a)在队列的源焊盘上设置偏移量,b)确保队列至少可以容纳与您设置的偏移量一样多的数据。

关于rust - 在GStreamer管道中将tee的单个分支延迟n秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63236376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com