switch back to using HTTP server to stream file to MPV - it doesn't idle after playing FIFO

This commit is contained in:
Drew Weymouth
2025-07-27 17:39:48 -07:00
parent 9844bbf6cb
commit 333b96dd3b
3 changed files with 14 additions and 81 deletions
+2 -8
View File
@@ -51,7 +51,6 @@ func (fs *FileStreamerServer) Serve() error {
_ = fs.server.Serve(fs.listener)
}()
log.Println("Serving and WAITING for done")
<-fs.done // wait for the handler to finish
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
@@ -61,13 +60,9 @@ func (fs *FileStreamerServer) Serve() error {
}
// Handler that streams the file using chunked transfer encoding.
func (fs *FileStreamerServer) streamHandler(w http.ResponseWriter, r *http.Request) {
log.Println("FILE STREAMER REQUEST")
func (fs *FileStreamerServer) streamHandler(w http.ResponseWriter, _ *http.Request) {
defer close(fs.done) // signal Serve() to shut down after this request
totalWrote := 0
defer log.Println("File streamer wrote", totalWrote, "bytes")
file, err := os.Open(fs.Path)
if err != nil {
log.Println("File streamer failed to open source file")
@@ -92,7 +87,7 @@ func (fs *FileStreamerServer) streamHandler(w http.ResponseWriter, r *http.Reque
}
if n > 0 {
written, err := w.Write(buf[:n])
_, err := w.Write(buf[:n])
if err != nil {
log.Printf("client write error: %v", err)
break
@@ -100,7 +95,6 @@ func (fs *FileStreamerServer) streamHandler(w http.ResponseWriter, r *http.Reque
if canFlush {
flusher.Flush()
}
totalWrote += written
}
if n == 0 && complete {