Golang?FFmpeg??????,????????????????
??,????FFmpeg?????????????????FFmpeg?????????,?????FFmpeg?????????????????FFmpeg??????????????:
ffmpeg -i input.mp4 -c copy -map 0 -segment_time 10 -f segment outputd.mp4
????????????input.mp4??10??????????output001.mp4?output002.mp4??
???,??Golang????HTTP???,??????????????????Golang?net/http????HTTP???,????????????????????
????????????:
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/video", videoHandler) log.Fatal(http.ListenAndServe(":8080", nil)) } func videoHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "video/mp4") w.Header().Set("Transfer-Encoding", "chunked") for i := 1; i <= 10; i++ { segmentURL := fmt.Sprintf("http://example.com/videos/outputd.mp4", i) resp, err := http.Get(segmentURL) if err != nil { log.Println(err) return } defer resp.Body.Close() chunk := make([]byte, 4096) for { n, err := resp.Body.Read(chunk) if err != nil { log.Println(err) break } w.Write(chunk[:n]) } } }
?????????/video??????,??????????????????????????????segmentURL?????????????
??,????Golang??,??HTTP??????????/video?,?????????????????,???????????????
???,????????,???????????????????????