gpt4 book ai didi

Gstreamer:为什么在显示一些滤镜之前需要视频转换?

转载 作者:行者123 更新时间:2023-12-04 11:22:06 29 4
gpt4 key购买 nike

我正在GStreamer 1.0上编写非常基本的管道,我想了解为什么在显示流之前需要视频转换。

gst-launch-1.0 videotestsrc ! vertigotv ! videoconvert ! autovideosink

如果我从管道中删除了视频转换器,则会收到错误消息,并且流无法播放:
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

我不明白为什么不能自动协商上限。

这是眩晕水槽垫的功能模板:
Capabilities:
video/x-raw
format: { RGBx, BGRx }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]

这是autovideosink的src pad的功能模板:
Capabilities:
ANY

有人可以解释一下为什么要使用此元素是必要的。为什么在显示管道之前需要切换色彩空间?有没有一种方法不使用此元素(也许使用大写字母)?

最佳答案

vertigotv元素can only handle raw video frames in RGBx and BGRx formatsautovideosink无法保证支持RGBx/BGRx格式。您需要在videoconvert的源和vertigotv的水槽之间的ensure compatibility中使用autovideosink元素。
autovideosink是一个bin,其中包含实际的视频接收器。 autovideosink的接收器功能由其内部视频接收器的接收器功能确定。
Pipeline graph with autovideosink which uses glimagesink, without videoconvert

它可以使用几种类型的视频接收器。例如,glimagesink将在没有videoconvert的情况下工作(因为它可以读取RGBx/BGRx帧)。另一方面,如果没有osxvideosinkvideoconvert将不起作用(因为缺少对RGBx/BGRx的支持)。

万一autovideosink将使用支持RGBx/BGRx的视频接收器,则videoconvert元素将仅通过帧,而不执行任何工作。因此,您可以放心地将其保留在所有情况下。

关于Gstreamer:为什么在显示一些滤镜之前需要视频转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613109/

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