gpt4 book ai didi

python - gstreamer 动态管道 filesink 添加,出现未协商的错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:50 24 4
gpt4 key购买 nike

这个有效:

gst-launch -e v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=30/1 ! tee name=splitter ! queue ! autovideosink splitter. ! queue ! theoraenc ! oggmux ! filesink location=testogg.ogg

我正在尝试使用 python 和 pygst 以动态方式执行相同的操作,autovideosink 分支始终存在,在用户输入后我想附加 filesink。

这是动态连接代码:

    fileSink = self.getFileSink()
pad = fileSink.get_static_pad('sink')
pad.set_blocked_async(True, self.padBlockedOnRecordStart, None)
self.player.add(fileSink)
fileSink.set_state(gst.STATE_PLAYING)
self.player.get_by_name('splitter').link(fileSink)
pad.set_blocked_async(False, self.padBlockedOnRecordStart, None)

在链接时出现此错误:

Error: GStreamer encountered a general stream error. gstbasesrc.c(2625): gst_base_src_loop (): /GstPipeline:player/GstV4l2Src:video:
streaming task paused, reason not-negotiated (-4)

有什么想法吗?

最佳答案

现在可以了!解决方案是将“格式”添加到 capsfilter。以前的大写过滤器字符串是:

caps = gst.Caps('video/x-raw-yuv,width=640,height=480,framerate=30/1')

现在是:

caps = gst.Caps('video/x-raw-yuv,format=(fourcc)I420,width=640,height=480,framerate=30/1')

问题是我的网络摄像头默认输出像素格式是“YUYV”,而我的 fileSink Bin 中的 theoraenc 元素不接受这种格式,因此添加 format=(fourcc)I420 有所帮助。我仍然不知道为什么以前的 capsfilter 字符串可以与 gst-launch 一起使用,但我现在不介意了。感谢帮助

关于python - gstreamer 动态管道 filesink 添加,出现未协商的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553197/

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