我正在尝试理解直播解决方案的可行性。我想抓住WebRTC流(音频和视频),将它们发送到服务器并将它们转换成块,以发送到html5视频标签或使用WebM容器(VP8和Opus编解码器)的DASH播放器。
我还研究了ffmpeg, ffserver和gstreamer,但是…
我的问题是如何馈送的WebRTC流(直播)和转换它们在HTTP块(直播DASH兼容)?
有人做过这样的事吗?
这可以在Node.js中按照以下方式实现:
-
创建与服务器的WebRTC连接。这基本上是一个握手,在服务器和客户端上创建RTCPeerConnection引用
-
将getUserMedia MediaStream管道到WebRTC连接。(这需要使用addTrack作为RTCPeerConnection逐个跟踪完成。addStream已弃用)
-
服务器上的监听器将数据推送到流接口,该流接口通过管道传输到fluent-ffmpeg
-
fluent-ffmpeg将原始音频流转码为MPEG-DASH(参见ffmpeg选项中的dash转码)文件。
-
Files (chunks &清单)存在于客户端可用的单个文件夹下
-
客户端使用ShakaPlayer或其他一些横线流,并为它提供块和清单的基本路径。