首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个GStreamer管道可以使用filesink,而不能使用ximagesink/autovideosink?

为什么这个GStreamer管道可以使用filesink,而不能使用ximagesink/autovideosink?
EN

Stack Overflow用户
提问于 2019-12-01 14:44:54
回答 3查看 1K关注 0票数 1

在我的Ubuntu系统上,我可以运行这个管道:

gst-launch-1.0 videotestsrc ! autovideosink

并以30fps的速度查看测试模式。

我也可以启动这个管道:

gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! avenc_mpeg4 ! mp4mux ! filesink location=test.mp4

...and可以使用gst-play-1.0查看test.mp4文件,这是没有问题的。

但这两条管道不会打开视图窗口,也不会在调试一直打开的情况下给出错误:

gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! ximagesink

gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! autovideosink

在我的mac上运行良好,但在Ubuntu上没有窗口。

更奇怪的是:即使使用-v,也没有自动视频链接的pad协商输出。GST_DEBUG=autovideosink:6也什么都没有... ?!?

我从来没有见过gstreamer变得沉默。

建议?

EN

回答 3

Stack Overflow用户

发布于 2019-12-01 16:19:20

听起来像是两个问题。我不清楚为什么没有输出。也许是打字错误?

至于管道,您很可能希望在视频接收器之前使用videoconvertautovideoconvert。如果您的图形驱动程序不支持解码器输出的色彩空间,则需要将其转换为满足接收器要求的格式。

票数 0
EN

Stack Overflow用户

发布于 2020-10-21 02:33:16

代码语言:javascript
复制
gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! avenc_mpeg4 ! mp4mux ! filesink location=test.mp4 -e

在gst-launch-1.0中添加"-e“参数就可以了。这个参数主要是在关闭mp4file之前写入一个EOS(End of stream)报头。

票数 0
EN

Stack Overflow用户

发布于 2020-11-02 20:47:00

您可以使用GST_DEBUG_DUMP_DOT_DIR环境来转储管道的点文件。对Getting pipeline graphs的引用

然后,您可以查看解码器使用哪个解码器(nvidia/vaapi/software),并查看使用了哪个接收器。它们应该是匹配的。

如果解码器和接收器不匹配,则可以使用nvvideoconvert/vaapipostproc将帧缓冲区复制到主机内存,并使用ximagesink进行渲染。或者您可以选择正确的解码器和接收器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59123211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档