0

h264 ビデオ ストリームを送信するサーバーと、ストリームを再生するクライアントの 2 つのスクリプトがあります。どちらも 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 を filesink に置き換え、場合によっては 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 に答える