diff --git a/transcoder/main.go b/transcoder/main.go index 8cf6db04..b1953f87 100644 --- a/transcoder/main.go +++ b/transcoder/main.go @@ -217,7 +217,12 @@ func main() { e.Use(middleware.Logger()) e.HTTPErrorHandler = ErrorHandler - h := Handler{transcoder: src.NewTranscoder()} + transcoder, err := src.NewTranscoder() + if err != nil { + e.Logger.Fatal(err) + return + } + h := Handler{transcoder: transcoder} e.GET("/:resource/:slug/direct", DirectStream) e.GET("/:resource/:slug/master.m3u8", h.GetMaster) diff --git a/transcoder/src/transcoder.go b/transcoder/src/transcoder.go index 21e9d04a..57d1899e 100644 --- a/transcoder/src/transcoder.go +++ b/transcoder/src/transcoder.go @@ -3,6 +3,8 @@ package src import ( "errors" "log" + "os" + "path" "sync" ) @@ -14,11 +16,23 @@ type Transcoder struct { mutex sync.RWMutex } -func NewTranscoder() *Transcoder { +func NewTranscoder() (*Transcoder, error) { + out := GetOutPath() + dir, err := os.ReadDir(out) + if err != nil { + return nil, err + } + for _, d := range dir { + err = os.RemoveAll(path.Join(out, d.Name())) + if err != nil { + return nil, err + } + } + return &Transcoder{ streams: make(map[string]*FileStream), preparing: make(map[string]chan *FileStream), - } + }, nil } func (t *Transcoder) getFileStream(path string) (*FileStream, error) {