fast-start video

This commit is contained in:
2025-03-16 10:41:14 +02:00
parent 3c13056111
commit 34d50fde30
2 changed files with 27 additions and 1 deletions

View File

@@ -135,12 +135,26 @@ func (cfg *apiConfig) handlerUploadVideo(w http.ResponseWriter, r *http.Request)
tempFile.Seek(0, io.SeekStart)
converted, err := processVideoForFastStart(tempFile.Name())
if err != nil {
respondWithError(w, http.StatusInternalServerError, "Couldn't process video", err)
return
}
fileName := prefix + "/" + videoPathName + extension
cFile, err := os.ReadFile(converted)
if err != nil {
respondWithError(w, http.StatusInternalServerError, "Couldn't read converted file", err)
return
}
cReader := bytes.NewReader(cFile)
_, err = cfg.s3Client.PutObject(context.Background(), &s3.PutObjectInput{
Bucket: &cfg.s3Bucket,
Key: &fileName,
Body: tempFile,
Body: cReader,
ContentType: &mimeType,
})
if err != nil {

12
main.go
View File

@@ -68,6 +68,18 @@ func getVideoAspectRatio(filePath string) (string, error) {
}
func processVideoForFastStart(filePath string) (string, error) {
newName := filePath + ".processing"
cmd := exec.Command("ffmpeg", "-i", filePath, "-c", "copy", "-movflags", "faststart", "-f", "mp4", newName)
var buffer bytes.Buffer
cmd.Stdout = &buffer
err := cmd.Run()
if err != nil {
return "", err
}
return newName, nil
}
func main() {
godotenv.Load(".env")