Video streaming GStreamer-RTSP流到FLV文件

Video streaming GStreamer-RTSP流到FLV文件,video-streaming,gstreamer,h.264,rtsp,flv,Video Streaming,Gstreamer,H.264,Rtsp,Flv,我实际上正在研究视频流,目标是从摄像机获取RTSP流,并将其转换为FLV文件。以下是我尝试过的: $GSTREAMER rtspsrc location=$RTSP_SOURCE ! rtpbin ! rtph264depay ! h264parse \ ! avdec_h264 ! video-x/raw,width=500,height=500 ! x264enc ! h264parse ! flvmux ! filesink location=$FLV_SINK 管道显示一个错误

我实际上正在研究视频流,目标是从摄像机获取RTSP流,并将其转换为FLV文件。以下是我尝试过的:

$GSTREAMER rtspsrc location=$RTSP_SOURCE ! rtpbin ! rtph264depay ! h264parse  \
   ! avdec_h264 ! video-x/raw,width=500,height=500 ! x264enc ! h264parse ! flvmux ! filesink location=$FLV_SINK

管道显示一个错误,说明它不能将
avdec_h264
x264enc
一起使用,是否有可以一起使用的avdec_h264或x264enc的替代方案?或者有没有其他方法可以做到这一点。

删除
video-x/raw,宽度=500,高度=500
。如果没有视频比例元素,则无法指定那样的视频分辨率

如果需要缩放,则添加
videoscale
元素。确保输出维度与编解码器兼容,并且元素将处理

选择宽度和高度为16的倍数,以确保安全

$GSTREAMER rtspsrc location=$RTSP_SOURCE ! rtpbin ! rtph264depay ! h264parse  \
   ! avdec_h264 ! videoscale ! video-x/raw,width=640,height=640 ! x264enc ! h264parse ! flvmux ! filesink location=$FLV_SINK

嘿,谢谢,它帮助我摆脱了错误,但是需要调整大小,我应该把它放在哪里?正确的方法是什么?在
avdec_h264
和您的
video/x-raw..
capsDid之间放置一个
videoscale0
元素,但它表示
无法将videoscale0链接到x264enc
这可能是由于格式限制。对于x264,可能不接受500x500。使用GST_DEBUG=4并继续阅读caps协商及其失败原因。否,OMX变体仅在某些嵌入式平台上找到。编解码器H.264有一些限制。例如,倍数为16的分辨率可能会有所帮助。。但检查它实际尝试执行的日志。也许你也需要颜色空间转换。