【问题标题】:Video Streaming application's requirements using GStreamer使用 GStreamer 的视频流应用程序的要求
【发布时间】:2011-08-14 03:51:54
【问题描述】:

我想创建一个使用 GStreamer 通过无线流式传输视频的应用程序。 我的要求是: H.264 编解码器、RTP/MPEG2-TS 流和网络上的 RTP 协议。
谁能解释一下我需要为该插件创建任何插件或现有插件可以提供所有功能吗?如果是,那么我应该使用哪些插件? 我想再补充一点,我将使用手机捕获视频并通过网络从该设备传输到一个或多个特定地址。 请回复 。 提前致谢。

【问题讨论】:

    标签: video-streaming h.264 gstreamer rtp


    【解决方案1】:

    gstrtpbin 应该可以满足您的所有流媒体需求。它将允许您将 RTP 流传输到一个或多个地址。有关如何使用它的说明,gstreamer source code 有几个不同语言的示例。 Gstreamer 还允许您使用 x264 将视频编码为 H.264 流。这包含在“丑陋”的插件包中。

    【讨论】:

      【解决方案2】:

      考虑到 RTP(根据需要更改主机/IP),以下管道应该会有所帮助。根据您的要求,您可以将ffenc_mpeg4 替换为x264enc pass=qual quantizer=20 tune=zerolatency,将rtpmp4vpay 替换为rtph264pay。同样,在解码器端,您可以将ffdec_mpeg4 替换为x264dec,将rtpmp4vdepay 替换为rtph264depay。可能还需要调整其他一些东西。

      1) RTP 发送网络摄像头和音频

      gst-launch gstrtpbin name=rtpbin latency=0 v4l2src device=/dev/video0 ! typefind ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv, width=640, height=480 ! videorate ! video/x-raw-yuv, framerate=30/1 ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=5502 host=127.0.0.1 rtpbin.send_rtcp_src_0 ! udpsink port=5510 host=127.0.0.1 sync=false async=false udpsrc port=5510 ! rtpbin.recv_rtcp_sink_0 autoaudiosrc samplesperbuffer=1000 ! alawenc ! rtppcmapay ! rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 ! udpsink port=5504 host=127.0.0.1 rtpbin.send_rtcp_src_1 ! udpsink port=5512 host=127.0.0.1 sync=false async=false udpsrc port=5512 ! rtpbin.recv_rtcp_sink_1

      2) RTP 接收网络摄像头和音频

      gst-launch gstrtpbin name=rtpbin2 latency=0 udpsrc caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1" port=5502 ! rtpbin2.recv_rtp_sink_0 rtpbin2. ! rtpmp4vdepay ! ffdec_mpeg4 ! videoscale ! video/x-raw-yuv, width=640, height=480 ! videorate ! video/x-raw-yuv, framerate=30/1 ! ffmpegcolorspace ! autovideosink udpsrc port=5510 ! rtpbin2.recv_rtcp_sink_0 rtpbin2.send_rtcp_src_0 ! udpsink host=127.0.0.1 port=5510 sync=false async=false udpsrc caps="application/x-rtp,media=(string)audio, clock-rate=(int)8000, encoding-name=(string)PCMA" port=5504 ! rtpbin2.recv_rtp_sink_1 rtpbin2. ! rtppcmadepay ! alawdec ! autoaudiosink buffer-time=10000 udpsrc port=5512 ! rtpbin2.recv_rtcp_sink_1 rtpbin2.send_rtcp_src_1 ! udpsink host=127.0.0.1 port=5512 sync=false async=false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        相关资源
        最近更新 更多