使用WebM将WebRTC流(getUserMedia)直播到DASH

cyp*_*cyp 5 ffmpeg live-streaming webrtc

我试图了解实时流媒体解决方案的可行性.我想抓住WebRTC流(音频和视频),将它们发送到服务器并将其转换为块,以使用WebM容器(VP8和Opus编解码器)发送到html5视频标签或DASH播放器.

我也看了ffmpeg,ffserver和gstreamer但是......

我的问题是如何提供WebRTC流(实时)并在HTTP块(实时DASH兼容)中转换它们?

有人做过这样的事吗?

Kan*_*bel 0

这可以在 Node.js 中按照以下方式实现:

  1. 创建与服务器的 WebRTC 连接。这基本上是在服务器和客户端上创建RTCPeerConnection引用的握手

  2. 将 getUserMedia MediaStream 通过管道传输到 WebRTC 连接。(这需要使用addTrack逐个轨道完成,因为RTCPeerConnection.addStream已弃用)

  3. 服务器上的侦听器将数据推送到流接口中,该接口通过管道传输到fluence-ffmpeg

  4. Fluent-ffmpeg 将原始音频流转码为 MPEG-DASH(请参阅ffmpeg 选项以了解 dash 转码)文件。

  5. 文件(块和清单)存在于客户端可用的单个文件夹下

  6. 客户端使用 ShakaPlayer 或其他一些 Dash Streamer 并为其提供块和清单的基本路径。

如何使用 WebRTC 的有用示例(包括转码为 mp4): https: //github.com/node-webrtc/node-webrtc-examples