Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video streaming 为什么这个GStreamer管道可以与filesink一起工作,而不能与ximagesink/autovideosink一起工作?_Video Streaming_Gstreamer_Gstreamer 1.0 - Fatal编程技术网

Video streaming 为什么这个GStreamer管道可以与filesink一起工作,而不能与ximagesink/autovideosink一起工作?

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

在我的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-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进行渲染。或者您可以选择正确的解码器和接收器