Video streaming 为什么这个GStreamer管道可以与filesink一起工作,而不能与ximagesink/autovideosink一起工作?
在我的Ubuntu系统上,我可以运行以下管道:Video streaming 为什么这个GStreamer管道可以与filesink一起工作,而不能与ximagesink/autovideosink一起工作?,video-streaming,gstreamer,gstreamer-1.0,Video Streaming,Gstreamer,Gstreamer 1.0,在我的Ubuntu系统上,我可以运行以下管道: gst-launch-1.0 videotestsrc!自动视频接收器 并以30fps的速度查看测试模式 我还可以启动此管道: gst-launch-1.0-e-v rtspsrc'位置=…'!德克宾!avenc_mpeg4!mp4mux!filesink location=test.mp4 …并且可以使用gst-play-1.0毫无问题地查看test.mp4文件 但这两条管道不会打开视图窗口,但在调试一直打开的情况下也不会出现错误: gst-la
gst-launch-1.0 videotestsrc!自动视频接收器
并以30fps的速度查看测试模式
我还可以启动此管道:
gst-launch-1.0-e-v rtspsrc'位置=…'!德克宾!avenc_mpeg4!mp4mux!filesink location=test.mp4
…并且可以使用gst-play-1.0毫无问题地查看test.mp4文件
但这两条管道不会打开视图窗口,但在调试一直打开的情况下也不会出现错误:
gst-launch-1.0-e-v rtspsrc'位置=…'!德克宾!ximagesink
gst-launch-1.0-e-v rtspsrc'位置=…'!德克宾!自动视频接收器
在我的mac上运行良好,但在Ubuntu上没有窗口
更奇怪的是:即使使用-v,autovideosink也没有焊盘协商的输出。GST_DEBUG=autovideosink:6…?!?也没有任何功能
我从没见过gstreamer沉默过
建议?听起来像是两个问题。我不清楚为什么没有输出。也许是打字错误
至于管道,您很可能希望在视频接收器之前使用
videoconvert
或autovideoconvert
。如果您的图形驱动程序不支持解码器输出的颜色空间,则需要将其转换为满足接收器要求的格式。对我来说,这似乎有两个问题。我不清楚为什么没有输出。也许是打字错误
gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! avenc_mpeg4 ! mp4mux ! filesink location=test.mp4 -e
至于管道,您很可能希望在视频接收器之前使用videoconvert
或autovideoconvert
。如果图形驱动程序不支持解码器输出的颜色空间,则需要将其转换为满足接收器要求的格式
gst-launch-1.0 -e -v rtspsrc 'location=...' ! decodebin ! avenc_mpeg4 ! mp4mux ! filesink location=test.mp4 -e
将“-e”参数添加到gst-launch-1.0中应该可以完成这项工作
此参数基本上是在关闭MP4文件之前将EOS(流结束)头写入该文件,此
将“-e”参数添加到gst-launch-1.0中应该可以完成这项工作
此参数基本上是在关闭MP4文件之前将EOS(流结束)头写入该文件,此i您可以使用GST_DEBUG_DUMP_DOT_DIR env转储管道的点文件。提及 然后,您可以查看decodebin使用的解码器(nvidia/vaapi/软件),以及使用的接收器。而且他们会匹配的
如果解码器和接收器不匹配,则可以使用nvvideoconvert/VAAPIPpostProc将帧缓冲区复制到主机内存,并使用ximagesink进行渲染。或者您可以选择正确的解码器和接收器您可以使用GST\u DEBUG\u DUMP\u DOT\u DIR env转储管道的点文件。提及 然后,您可以查看decodebin使用的解码器(nvidia/vaapi/软件),以及使用的接收器。而且他们会匹配的 如果解码器和接收器不匹配,则可以使用nvvideoconvert/VAAPIPpostProc将帧缓冲区复制到主机内存,并使用ximagesink进行渲染。或者您可以选择正确的解码器和接收器