使用gstreamer 1.0录制视频中的视频

时间:2013-07-22 19:48:38

标签: shell video video-streaming gstreamer

我有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文件,而不是播放流。我怎么能这样做?

1 个答案:

答案 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"

希望有所帮助。