0

我有 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 文件中。我怎样才能做到这一点 ?

4

1 回答 1

2

只需将 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"

希望有帮助。

于 2013-07-22T21:14:27.373 回答