GStreamer转换RTSP流为FLV时调整分辨率出现链路错误如何解决
错误原因
- 最直接的问题是Caps过滤器的媒体类型拼写错误:你在命令中写的
video-x/raw不是GStreamer定义的原始视频媒体类型,正确写法应为video/x-raw。拼写错误导致videoscale输出的格式和x264enc要求的输入格式都无法匹配该错误标识,因此无法完成元素连接。 - 存在隐性兼容风险:即使修正拼写,部分场景下也可能因像素格式不兼容报错,
x264enc仅支持特定像素格式的原始视频输入,如果解码输出的原始视频像素格式不在其支持范围内,仍会出现连接失败的问题。
修复方案
你只需要做两处调整即可:
- 将Caps过滤器中的
video-x/raw修正为video/x-raw - 可选在Caps过滤器后新增
videoconvert元素,自动适配x264enc支持的像素格式,覆盖所有兼容性场景
修正后的完整命令如下:
gst-launch-1.0 rtspsrc location=$RTSP_SOURCE latency=0 ! rtpbin ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=640 ! videoconvert ! x264enc ! h264parse ! flvmux streamable=true ! rtmpsink location=$RTMP_SERVER
如果你的RTSP源解码后输出的像素格式本身是x264enc支持的I420等格式,也可以省略新增的videoconvert元素,仅修正拼写错误即可正常运行。
内容的提问来源于stack exchange,提问作者Jim Lin
相关产品推荐
相关产品推荐

