m3u8d/merge.go

42 lines
748 B
Go

package m3u8d
import (
"crypto/sha256"
"encoding/hex"
"io"
"os"
)
func mergeTsFileList_Raw(tsFileList []string, outputTs string) (hash string, err error) {
fout, err := os.Create(outputTs)
if err != nil {
return "", err
}
hashWriter := sha256.New()
multiW := io.MultiWriter(fout, hashWriter)
for _, tsName := range tsFileList {
var fin *os.File
fin, err = os.Open(tsName)
if err != nil {
fout.Close()
_ = os.Remove(outputTs)
return "", err
}
_, err = io.Copy(multiW, fin)
if err != nil {
fin.Close()
fout.Close()
_ = os.Remove(outputTs)
return "", err
}
fin.Close()
}
err = fout.Close()
if err != nil {
return "", err
}
tmp := hashWriter.Sum(nil)
return hex.EncodeToString(tmp[:]), nil
}