- [xqq/mpegts.js](https://github.com/xqq/mpegts.js)
- [bilibili/flv.js](https://github.com/bilibili/flv.js)
- [bytedance/xgplayer](https://github.com/bytedance/xgplayer)
+- [videojs/video.js](https://github.com/videojs/video.js)([demo](https://videojs-http-streaming.netlify.app))
- [video-dev/hls.js@v1.0.7+](https://hls-js-10780deb-25d8-41d3-b164-bc334c8dd47f.netlify.app/demo/)
- [mpv](https://mpv.io/)
}
defer f.Close()
- b := make([]byte,1<<20)
- if n,e := f.Read(b);e != nil {
+ if b,e := io.ReadAll(f);e != nil {
flog.L(`E: `,e)
w.Header().Set("Retry-After", "1")
w.WriteHeader(http.StatusServiceUnavailable)
return
- } else if n == 1<<20 {
- flog.L(`W: `,`buf limit`)
- w.Header().Set("Retry-After", "1")
- w.WriteHeader(http.StatusServiceUnavailable)
- return
} else {
- buf = b[:n]
+ buf = b
m4s_cache.Store(path,buf)
go func(){//移除
time.Sleep(time.Second*time.Duration(savestream.m4s_hls+1))