Some checks failed
telegram message / notify (push) Has been cancelled
- m3u8 parser - segments download - video-audio merge
46 lines
857 B
Go
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
|
|
}
|