42 lines
748 B
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
|
|
}
|