fast-start video
This commit is contained in:
@@ -135,12 +135,26 @@ func (cfg *apiConfig) handlerUploadVideo(w http.ResponseWriter, r *http.Request)
|
|||||||
|
|
||||||
tempFile.Seek(0, io.SeekStart)
|
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
|
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{
|
_, err = cfg.s3Client.PutObject(context.Background(), &s3.PutObjectInput{
|
||||||
Bucket: &cfg.s3Bucket,
|
Bucket: &cfg.s3Bucket,
|
||||||
Key: &fileName,
|
Key: &fileName,
|
||||||
Body: tempFile,
|
Body: cReader,
|
||||||
ContentType: &mimeType,
|
ContentType: &mimeType,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
12
main.go
12
main.go
@@ -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() {
|
func main() {
|
||||||
godotenv.Load(".env")
|
godotenv.Load(".env")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user