1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
   | http.HandleFunc("/api/video", func(w http.ResponseWriter, r *http.Request) { 		 		videoFile, err := os.Open("videos/video2.mp4") 		if err != nil { 			http.Error(w, err.Error(), http.StatusInternalServerError) 			return 		} 		defer videoFile.Close()
  		 		fileInfo, err := videoFile.Stat() 		if err != nil { 			http.Error(w, err.Error(), http.StatusInternalServerError) 			return 		}
  		 		 		w.Header().Set("Content-Type", "video/mp4")
  		 		w.Header().Set("Content-Length", strconv.FormatInt(fileInfo.Size(), 10))
  		 		rangeHeader := r.Header.Get("Range") 		if rangeHeader != "" { 			 			start, _, err := parseRange(rangeHeader, fileInfo.Size()) 			if err != nil { 				http.Error(w, "Invalid range request", http.StatusRequestedRangeNotSatisfiable) 				return 			} 			 			
  			 			videoFile.Seek(start, 0)
  			 			http.ServeContent(w, r, "", fileInfo.ModTime(), videoFile) 		} else { 			 			http.ServeContent(w, r, "", fileInfo.ModTime(), videoFile) 		} 	}) 	http.ListenAndServe(":9999", nil)
  |