govd/util/av/merge_audio.go
stefanodvx c8d0666d1d
Some checks failed
telegram message / notify (push) Has been cancelled
fixes (desc)
- m3u8 parser
- segments download
- video-audio merge
2025-04-23 01:44:25 +02:00

46 lines
857 B
Go

package av
import (
"fmt"
"os"
ffmpeg "github.com/u2takey/ffmpeg-go"
)
func MergeVideoWithAudio(
videoFile string,
audioFile string,
) error {
tempFileName := videoFile + ".temp"
outputFile := videoFile
err := os.Rename(videoFile, tempFileName)
if err != nil {
return fmt.Errorf("failed to rename file: %w", err)
}
defer os.Remove(tempFileName)
defer os.Remove(audioFile)
videoStream := ffmpeg.Input(tempFileName)
audioStream := ffmpeg.Input(audioFile)
err = ffmpeg.Output(
[]*ffmpeg.Stream{videoStream, audioStream},
outputFile,
ffmpeg.KwArgs{
"map": []string{"0:v:0", "1:a:0"},
"movflags": "+faststart",
"c:v": "copy",
"c:a": "copy",
}).
Silent(true).
OverWriteOutput().
Run()
if err != nil {
os.Remove(outputFile)
return fmt.Errorf("failed to merge files: %w", err)
}
return nil
}