Browse Source

HLS: rename path into dir

pull/471/head v0.16.4
aler9 5 years ago
parent
commit
bf92496af0
  1. 18
      internal/hlsconverter/converter.go
  2. 24
      internal/hlsserver/server.go

18
internal/hlsconverter/converter.go

@ -104,11 +104,11 @@ func ipEqualOrInRange(ip net.IP, ips []interface{}) bool {
// Request is an HTTP request received by an HLS server. // Request is an HTTP request received by an HLS server.
type Request struct { type Request struct {
Path string Dir string
FileName string File string
Req *http.Request Req *http.Request
W http.ResponseWriter W http.ResponseWriter
Res chan io.Reader Res chan io.Reader
} }
type trackIDPayloadPair struct { type trackIDPayloadPair struct {
@ -592,7 +592,7 @@ func (c *Converter) runRequestHandler(terminate chan struct{}, done chan struct{
} }
switch { switch {
case req.FileName == "stream.m3u8": case req.File == "stream.m3u8":
func() { func() {
c.tsMutex.RLock() c.tsMutex.RLock()
defer c.tsMutex.RUnlock() defer c.tsMutex.RUnlock()
@ -633,8 +633,8 @@ func (c *Converter) runRequestHandler(terminate chan struct{}, done chan struct{
req.Res <- bytes.NewReader([]byte(cnt)) req.Res <- bytes.NewReader([]byte(cnt))
}() }()
case strings.HasSuffix(req.FileName, ".ts"): case strings.HasSuffix(req.File, ".ts"):
base := strings.TrimSuffix(req.FileName, ".ts") base := strings.TrimSuffix(req.File, ".ts")
c.tsMutex.RLock() c.tsMutex.RLock()
f, ok := c.tsByName[base] f, ok := c.tsByName[base]
@ -649,7 +649,7 @@ func (c *Converter) runRequestHandler(terminate chan struct{}, done chan struct{
req.W.Header().Set("Content-Type", `video/MP2T`) req.W.Header().Set("Content-Type", `video/MP2T`)
req.Res <- f.buf.NewReader() req.Res <- f.buf.NewReader()
case req.FileName == "": case req.File == "":
req.Res <- bytes.NewReader([]byte(index)) req.Res <- bytes.NewReader([]byte(index))
default: default:

24
internal/hlsserver/server.go

@ -106,7 +106,7 @@ outer:
for { for {
select { select {
case req := <-s.request: case req := <-s.request:
c, ok := s.converters[req.Path] c, ok := s.converters[req.Dir]
if !ok { if !ok {
c = hlsconverter.New( c = hlsconverter.New(
s.ctx, s.ctx,
@ -115,10 +115,10 @@ outer:
s.readBufferCount, s.readBufferCount,
&s.wg, &s.wg,
s.stats, s.stats,
req.Path, req.Dir,
s.pathMan, s.pathMan,
s) s)
s.converters[req.Path] = c s.converters[req.Dir] = c
} }
c.OnRequest(req) c.OnRequest(req)
@ -164,28 +164,28 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return return
} }
pa, fname := func() (string, string) { dir, fname := func() (string, string) {
if strings.HasSuffix(pa, ".ts") || strings.HasSuffix(pa, ".m3u8") { if strings.HasSuffix(pa, ".ts") || strings.HasSuffix(pa, ".m3u8") {
return path.Dir(pa), path.Base(pa) return path.Dir(pa), path.Base(pa)
} }
return pa, "" return pa, ""
}() }()
if fname == "" && !strings.HasSuffix(pa, "/") { if fname == "" && !strings.HasSuffix(dir, "/") {
w.Header().Add("Location", "/"+pa+"/") w.Header().Add("Location", "/"+dir+"/")
w.WriteHeader(http.StatusMovedPermanently) w.WriteHeader(http.StatusMovedPermanently)
return return
} }
pa = strings.TrimSuffix(pa, "/") dir = strings.TrimSuffix(dir, "/")
cres := make(chan io.Reader) cres := make(chan io.Reader)
hreq := hlsconverter.Request{ hreq := hlsconverter.Request{
Path: pa, Dir: dir,
FileName: fname, File: fname,
Req: r, Req: r,
W: w, W: w,
Res: cres, Res: cres,
} }
select { select {

Loading…
Cancel
Save