在我的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变得沉默。
建议?
发布于 2019-12-01 16:19:20
听起来像是两个问题。我不清楚为什么没有输出。也许是打字错误?
至于管道,您很可能希望在视频接收器之前使用videoconvert或autovideoconvert。如果您的图形驱动程序不支持解码器输出的色彩空间,则需要将其转换为满足接收器要求的格式。
发布于 2020-10-21 02:33:16
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)报头。
发布于 2020-11-02 20:47:00
您可以使用GST_DEBUG_DUMP_DOT_DIR环境来转储管道的点文件。对Getting pipeline graphs的引用
然后,您可以查看解码器使用哪个解码器(nvidia/vaapi/software),并查看使用了哪个接收器。它们应该是匹配的。
如果解码器和接收器不匹配,则可以使用nvvideoconvert/vaapipostproc将帧缓冲区复制到主机内存,并使用ximagesink进行渲染。或者您可以选择正确的解码器和接收器
https://stackoverflow.com/questions/59123211
复制相似问题