【问题标题】:Encoding raw h.264 data to browser via Dash通过 Dash 将原始 h.264 数据编码到浏览器
【发布时间】:2017-08-28 01:08:30
【问题描述】:

我有来自远程网络摄像头的原始 h264(无容器)的实时流。我想使用 DASH 在浏览器中实时流式传输它。 DASH 需要创建 mpd 文件(和分段)。我找到了在静态文件中实现这一目标的工具(例如 mp4box),但我正在努力寻找实时流的解决方案。有什么建议 - 最好使用 node.js 模块

我检查过的主题:

  1. mp4box - 从一方面我看到这个comment 声明“你不能用一些实时内容提供 MP4Box。你需要用预先分段的块来提供 MP4Box -live。 “另一方面,有很多人指向这个bitmovin tutorial,它确实使用mp4box实现了一个解决方案。在教程中,他们使用的是 mp4box(有 node.js api implementation)和 x264(没有 node.js 模块?还是包含在 ffmpeg/mp4box 中?)
  2. ngnix - ngnix 有一个 module 支持使用 rtmp 流式传输到 DASH。例如在这个toturial。我不想走这条路——正如我提到的,我正试图在 node.js 中完成这一切。

虽然我阅读了几篇有类似问题的帖子,但我找不到合适的解决方案。非常感谢您的帮助!

【问题讨论】:

  • 我也很感激解释 - 根据我的基本理解,h264 编码的视频需要一个容器(例如 mp4)才能传输。 DASH 是否在没有容器的情况下封装原始 h264 流?

标签: javascript node.js ffmpeg video-streaming mpeg-dash


【解决方案1】:

典型的架构是将您的直播流发送到流媒体服务器,然后该服务器将使用 HLS 和 DASH 等流媒体协议执行繁重的工作以使其他设备可以使用该流媒体。

因此客户端设备连接到服务器而不是浏览器。

这允许对视频进行编码和打包以到达尽可能多的设备,而服务器会执行任何必要的转码,并可能会创建不同比特率版本的流以适应不同的网络条件(如果您想提供此功能)服务水平。

典型的结构是编码流(例如 h.264 视频),打包到容器中(例如 mp4 分段)并通过 HLS 或 DASH 等流协议交付。

【讨论】:

  • 我有一个接受来自网络摄像头的流式传输的节点服务器。当您说“流媒体服务器”时,您指的是什么?一个rtsp服务器..?我无法将我编码的 h264 封装在 mp4 中,因为它是一个实时流(请参阅我之前的问题 - stackoverflow.com/questions/43113805/…)。非常感谢您的详细说明,非常感谢您的宝贵时间!
  • 流媒体服务器是指专用的流媒体服务器,如gstreamer.freedesktop.orgwowza.com。 mp4 和 DASH 的封装可以在流服务器上进行。
猜你喜欢
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多