如何使用Gstreamer从网络摄像头流式传输视频?

时间:2014-07-17 17:45:30

标签: windows streaming video-streaming gstreamer audio-streaming

如何使用Gstreamer从网络摄像头流式传输视频(如果可能还有音频)?我已经尝试过stream video from source,但我无法在Windows上从网络摄像头流式传输视频。 我该怎么做?


客户:

    VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998"
DEST=localhost
VIDEO_DEC="rtph263pdepay ! avdec_h263"
VIDEO_SINK="videoconvert ! autovideosink"
LATENCY=100
gst-launch -v gstrtpbin name=rtpbin latency=$LATENCY                                    \
           udpsrc caps=$VIDEO_CAPS port=5000 ! rtpbin.recv_rtp_sink_0                   \
             rtpbin. ! $VIDEO_DEC ! $VIDEO_SINK                                     \
           udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0                                   \
           rtpbin.send_rtcp_src_0 ! udpsink host=$DEST port=5005 sync=false async=false

服务器:

DEST=127.0.0.1
VOFFSET=0
AOFFSET=0
VELEM="ksvideosrc is-live=1"
VCAPS="video/x-raw,width=352,height=288,framerate=15/1"
VSOURCE="$VELEM ! $VCAPS"
VENC="avenc_h263p ! rtph263ppay"
VRTPSINK="udpsink port=5000 host=$DEST ts-offset=$VOFFSET name=vrtpsink"
VRTCPSINK="udpsink port=5001 host=$DEST sync=false async=false name=vrtcpsink"
VRTCPSRC="udpsrc port=5005 name=vrtpsrc"
gst-launch gstrtpbin name=rtpbin
            $VSOURCE ! $VENC ! rtpbin.send_rtp_sink_2
          rtpbin.send_rtp_src_2 ! $VRTPSINK 
              rtpbin.send_rtcp_src_2 ! $VRTCPSINK
            $VRTCPSRC ! rtpbin.recv_rtcp_sink_2

1 个答案:

答案 0 :(得分:2)

您必须使用GStreamer 1.3.90或更新版本以及仅在该版本之后可用的ksvideosrc元素。

然后你可以像其他任何输入一样流式传输......细节取决于你想要使用的编解码器,容器格式,流协议和网络协议。音频也是如此,它与视频基本完全相同。

http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples/rtp 在这里,您可以找到一些使用RTP进行流式传输的示例。服务器端和客户端示例,仅音频,仅视频或两者。并且还从真实的音频/视频捕获源流式传输(对于Linux而言,但在Windows上它的工作方式完全相同...只是针对Windows的特定元素)。