来自Raspberry的HTML5实时流媒体视频

时间:2015-03-24 14:42:38

标签: video-streaming html5-video gstreamer

我试图在HTML5网页上提供Raspberry相机的直播。由于树莓在防火墙内部,我想将其流式传输到外部服务器,并且该服务器应该能够将流提供给网页。

我能够从Raspberry获取流并使用Gstreamer将其流式传输到外部服务器,如下所示:

莓:

sudo raspivid -t 0 -b 5500000 -n -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! udpsink port=5000 host=EXT_SERVER_IP

或使用videotest信号代替Raspberry:

gst-launch-1.0 -v videotestsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! udpsink port=5000 host=EXT_SERVER_IP

外部服务器(显示在显示器上):

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink

或,外部服务器(在端口5001上使用tcpserver使流可用):

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! avdec_h264 ! videoconvert ! tcpserversink host=EXT_SERVER_IP port=5001

现在我有一些问题:

  1. 我需要将流作为兼容不同浏览器的格式(但我很乐意让它在Chrome中开始工作)。

  2. 我需要在某些指定端口上使用某些http请求/响应将流提供给网页。 Gstreamer似乎无法做到这一点。

  3. 使用Raspberry中的gstreamer到外部服务器的传输速度很快,几乎没有滞后,这也是Web演示的情况。此应用程序的滞后时间必须低于0.5秒(因为语音通过其他媒体传输而没有任何延迟)。

    我的网页目前看起来像这样:

    <video id="video" autoplay="autoplay" controls>
        <source src="http://EXT_SERVER_IP:5005" type="video/webm" codecs="vp8.0, vorbis">
        <source src="http://EXT_SERVER_IP:5006" type="video/ogg" codecs="theora, vorbis">
        <source src="http://EXT_SERVER_IP:5007" type="video/mp4" codecs="avc1.4D401E, mp4a.40.2">
        <source src="http://EXT_SERVER_IP:5008" type="html" codecs="vp8.0, vorbis">
        You browser doesn't support element video.
    </video>
    

    任何帮助将不胜感激!

    - 更新 -

    这个项目似乎是一个良好的开端。

    https://github.com/jacksonliam/mjpg-streamer

    但是我仍然需要在路由器/防火墙之外提供流,并且希望通过将流传输到外部服务器来实现。 我知道portforwarding是一个选项,但是这需要摄像机具有静态内部ip和路由器配置,而且我不确定这是否可行。

1 个答案:

答案 0 :(得分:-1)

您希望将WebRTC with UV4L用于HTML5实时音频/视频流。