gpt4 book ai didi

video - 如何将实时 h.264(IP 摄像机)视频流式传输到浏览器? (奖金 : low bandwidth and latency)

转载 作者:行者123 更新时间:2023-12-04 22:49:22 26 4
gpt4 key购买 nike

我需要将实时 h.264 编码视频从 IP 摄像机流式传输到浏览器,同时支持所有常见的浏览器和移动设备(即 Android、Firefox、Chrome、IE、Safari(Mac OS 和 iOS)),同时保持带宽要求和延迟降至最低。

MPEG-DASH 需要浏览器支持媒体源扩展,它们是 NOT supported by iOS .所以就这样了。

HLS 是 only supported by Safari and Edge .

此外,DASH 似乎施加了几秒钟的延迟,这是不可取的。

我希望能够对传入的 h.264 数据(即 fragmented MP4 )进行分 block ,通过 Websockets 将分 block 数据传递给浏览器,然后在它们到达时将 block 转储到某种播放器中。

Broadway它的分支是一个 javascript h.264 解码器,并且有一个 Broadway-stream支持流而不是文件的项目,但是文档很差,我只能在源不实时时找到流的示例。

最紧迫的问题是:当“分 block 数据”到达浏览器时,如何将其交给播放器或视频 HTML 元素?

我认为理想的设置是

  • Use ffmpeg to transcode the original video to a chunked format (fMP4)
  • Pipe the chunked output to a Node JS app它通过 Websocket 将每个 block 发送给所有连接的查看器
  • 观众的浏览器将每个传入的 block 转储到某种呈现视频的解码器中。

  • 我很清楚将接收到的 block 交给视频解码器。如果不依赖媒体源扩展并允许观众随机加入流,如何做到这一点?

    最佳答案

    你有点自相矛盾,因为这两件事:

    低延迟分 block 数据 不能一起去,要么一个,要么另一个。当您累积 N 秒长度的 block 时,您会引入 N 秒延迟。

    因此,如果您需要在所有设备的浏览器中播放的 H.264 直播流的低延迟播放,您唯一的选择就是 WebRTC。像 HLS 或 Dash 这样的基于分 block 的流媒体对您没有帮助。

    通过 Websockets 的媒体源扩展是另一种选择,它适用于通过 Websocket 流式传输到浏览器中的 MSE 的 block ;但是您需要发送 30-100 毫秒长度的 block 以保持亚秒级延迟。它也不适用于iOS。

    在这里,您可以比较 WebRTC 和 MSE 与实时 H.264 IP 摄像机的延迟:
    http://umediaserver.net/umediaserver/demohtml5WebRTCplayer.html
    http://umediaserver.net/umediaserver/demohtml5MSEplayer.html

    关于video - 如何将实时 h.264(IP 摄像机)视频流式传输到浏览器? (奖金 : low bandwidth and latency),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470329/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com