在我的Ubuntu系统上,我可以运行以下管道:
gst-launch-1.0 videotestsrc ! autovideosink
并以30fps的速度查看测试图案。
我还可以启动此管道:
gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! avenc_mpeg4 ! mp4mux ! filesink location=test.mp4
...并且可以使用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上没有窗口。
Weirder:即使使用-v,也没有自动视频接收器的填充协商输出。 GST_DEBUG = autovideosink:6 ...也没有任何帮助吗?
我从未见过gstreamer保持沉默。
建议?
答案 0 :(得分:0)
听起来像两个问题。为什么没有输出我不清楚。也许是错字?
关于管道,您很可能希望在视频接收器之前使用videoconvert
或autovideoconvert
。如果您的图形驱动程序不支持解码器输出的色彩空间,则需要将其转换为能够满足接收器要求的格式。
答案 1 :(得分:0)
gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! avenc_mpeg4 ! mp4mux ! filesink location=test.mp4 -e
在gst-launch-1.0中添加“ -e”参数可以为您完成这项工作 此参数基本上在关闭它之前将EOS(流的末尾)标头写入mp4文件,这是我
答案 2 :(得分:0)
您可以使用GST_DEBUG_DUMP_DOT_DIR env转储管道的点文件。引用Getting pipeline graphs
然后,您可以看到解码器使用哪个解码器(nvidia / vaapi / software),并查看使用哪个接收器。他们应该被匹配。
如果解码器和接收器不匹配,则可以使用nvvideoconvert / vaapipostproc将帧缓冲区复制到主机内存,并使用ximagesink进行渲染。或者您可以选择正确的解码器和接收器