我有2个脚本:发送h264视频流的服务器和播放流的客户端。两者都使用gstreamer-1.0。这是客户的代码:
DEST=10.2.2.30
LATENCY=0
VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264"
VIDEO_DEC="rtph264depay ! avdec_h264 max_threads=0"
VIDEO_SINK="videoconvert ! videoscale ! autovideosink sync=false async=false"
gst-launch-1.0 -v rtpbin name=rtpbin latency=$LATENCY \
udpsrc caps=$VIDEO_CAPS port=6000 ! rtpbin.recv_rtp_sink_0 \
rtpbin. ! $VIDEO_DEC ! $VIDEO_SINK \
udpsrc port=6001 ! rtpbin.recv_rtcp_sink_0 \
rtpbin.send_rtcp_src_0 ! udpsink port=6005 host=$DEST sync=false async=false
我想将它录制到yuv文件,而不是播放流。我怎么能这样做?
答案 0 :(得分:2)
只需用filesink替换autovideosink,并可能使用capsfilter来决定你想要的YUV格式。因此,对于I420,您可以执行以下操作:
VIDEO_SINK="videoconvert ! 'video/x-raw,format=(string)I420' ! filesink location=myfile.yuv sync=false async=false"
或者如果您想要特定的分辨率:
VIDEO_SINK="videoconvert ! videoscale ! 'video/x-raw,format=(string)I420,width=1280,height=720' ! filesink location=myfile.yuv sync=false async=false"
希望有所帮助。