bilibili / flv.js

HTML5 FLV Player
Apache License 2.0
22.94k stars 3.38k forks source link

探讨一下,fls.js如何用WebRTC来做P2P #349

Open snowinszu opened 6 years ago

snowinszu commented 6 years ago

现在CDN费用挺高的,如果能使用WebRTC技术来做P2P,可以节省不少成本,类似这个开源项目:https://github.com/cdnbye/hlsjs-p2p-engine
那么问题来了,hls是切片传输的,可以用类似BT算法,但flv是流式传输的,如果要做P2P,就要另开脑洞了,大家一起来探讨一下有没有好的办法呢:)

xqq commented 6 years ago

先说一些不太重要的: p2p 部分可以在 flv.js 外实现,然后继承 BaseLoader 基类,以 customLoader 形式在 createPlayer 时传入

需要将拿到的切片按 bytes=0- 开始顺序地整理拼装,然后走 _onDataArrival 回调提供给 IOController

snowinszu commented 6 years ago

如果要做纯Web的P2P,可能需要flv.js有以下2个能力:

  1. 在获取flv流的过程中将流进行切片,并进行缓存,在对等端请求时返回相应的切片
  2. 对等端通过P2P获得相应的切片后,可以让服务器不再下载这个range的数据,从而达到节省流量的目的