【问题标题】:Where can I find information on the WebM live http streaming?我在哪里可以找到有关 WebM 实时 http 流的信息?
【发布时间】:2011-07-11 11:15:44
【问题描述】:

我正在研究 HTML5 提供的视频播放功能。我刚刚发现 Google Chrome 和 Firefox 的最新版本支持通过带有标签的 HTTP 播放 WebM 编码的实时视频流。

我在任何地方都找不到有关如何实际实施的信息。在 Apple HTTP Live Streaming 协议上有很多链接,但在 WebM 流媒体上却不多。

任何有用的链接将不胜感激。

【问题讨论】:

    标签: html video html5-video live-streaming webm


    【解决方案1】:

    基本上,您需要一个可以为您流式传输 WebM 的服务器。

    WowzaFlumotion 是一些示例。

    您可以阅读有关它的讨论here

    【讨论】:

    • 这些链接在使用什么工具等方面很有用,但我实际上想知道在客户端和服务器之间的协议方面发生了什么。通过查看 Firebug 输出,客户端似乎为服务器创建了一个 HTTP 套接字。只要套接字保持打开状态,服务器就会保持套接字打开并泵送视频数据。您可以暂停播放器,但视频仍会在后台下载。这肯定与 Apple HTTP 实时流式传输或 Microsoft SilverLight SmoothStreaming 大不相同。
    【解决方案2】:

    这是我在 Ubuntu 中的做法:

    首先,从源代码构建 ffmpeg 以包含 libvpx 驱动程序(即使您使用具有它的版本,您也需要最新的(截至本月)来流式传输 webm,因为它们只是添加了包含全局标头的功能)。我在 Ubuntu 服务器和桌面上完成了这项工作,this guide 向我展示了如何 - 其他操作系统的说明 can be found here

    获得适当版本的 ffmpeg/ffserver 后,您可以将它们设置为流式传输,在我的例子中,这是按如下方式完成的。

    在视频捕获设备上:

    ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm
    
    • 其中的“-f video4linux2 -standard ntsc -i /dev/video0”部分可能会根据您的输入源而改变(我的是用于视频采集卡)。

    相关ffserver.conf摘录:

    Port 8090
    #BindAddress <server_ip>
    MaxHTTPConnections 2000
    MAXClients 100
    MaxBandwidth 1000000
    CustomLog /var/log/ffserver
    NoDaemon
    
    <Feed 0.ffm>
    File /tmp/0.ffm
    FileMaxSize 5M
    ACL allow <feeder_ip>
    </Feed>
    <Feed 0_webm.ffm>
    File /tmp/0_webm.ffm
    FileMaxSize 5M
    ACL allow localhost
    </Feed>
    
    <Stream 0.mpg>
    Feed 0.ffm
    Format mpeg1video
    NoAudio
    VideoFrameRate 25
    VideoBitRate 256
    VideoSize cif
    VideoBufferSize 40
    VideoGopSize 12
    </Stream>
    <Stream 0.webm>
    Feed 0_webm.ffm
    Format webm
    NoAudio
    VideoCodec libvpx
    VideoSize 320x240
    VideoFrameRate 24
    AVOptionVideo flags +global_header
    AVOptionVideo cpu-used 0
    AVOptionVideo qmin 1
    AVOptionVideo qmax 31
    AVOptionVideo quality good
    PreRoll 0
    StartSendOnKey
    VideoBitRate 500K
    </Stream>
    
    <Stream index.html>
    Format status
    ACL allow <client_low_ip> <client_high_ip>
    </Stream>
    
    • 请注意,这是为 feeder_ip 上的服务器配置的,以执行上述 ffmpeg 命令,并为 server_ip 上的服务器配置,因此在 server_ip 上处理 mpeg 到 webm 的对话时,通过 client_high_ip 服务器到 client_low_ip(下文继续)。

    这个 ffmpeg 命令在以前称为 server_ip 的机器上执行(它处理实际的 mpeg --> webm 转换并将其反馈到不同提要上的 ffserver):

    ffmpeg -i http://<server_ip>:8090/0.mpg -vcodec libvpx http://localhost:8090/0_webm.ffm
    

    一旦这些都启动了(首先是 ffserver,然后是 feeder_ip ffmpeg 进程,然后是 server_ip ffmpeg 进程),您应该能够在http://&lt;server_ip&gt;:8090/0.webm 访问实时流并在http://&lt;server_ip&gt;:8090/ 检查状态

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 2023-03-18
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多