Compare commits
2 Commits
dc1dad08f4
...
7938f80b8e
| Author | SHA1 | Date | |
|---|---|---|---|
| 7938f80b8e | |||
| 57e0df0062 |
60
main.go
60
main.go
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* @Author: BlackTeay
|
||||
* @Date: 2024-04-30 09:37:39
|
||||
* @LastEditTime: 2024-05-06 16:37:14
|
||||
* @LastEditTime: 2024-05-06 17:33:58
|
||||
* @LastEditors: BlackTeay
|
||||
* @Description:
|
||||
* @FilePath: /hls_builder/main.go
|
||||
@ -366,43 +366,41 @@ func upload(localPath string, keyPath string, onComplete func()) {
|
||||
fmt.Println("上传到Ucloud")
|
||||
fmt.Println("localPath:", localPath)
|
||||
fmt.Println("keyPath:", keyPath)
|
||||
// 统计 .ts 文件数量
|
||||
tsCount, err := countTSFiles(localPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to count .ts files: %s", err)
|
||||
} else {
|
||||
fmt.Printf("Found %d .ts files in %s\n", tsCount, localPath)
|
||||
}
|
||||
|
||||
us3cliPath := getUs3cliPath()
|
||||
bucket := "us3://jlntv-live/replay/" + keyPath
|
||||
|
||||
cmd := exec.Command(us3cliPath, "cp", localPath, bucket, "-r", "--parallel", "10", "--reduce")
|
||||
cmd := exec.Command(us3cliPath, "cp", localPath, bucket, "-r", "--parallel", "20")
|
||||
|
||||
// 获取命令的标准输出和错误输出
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
log.Fatal("Error creating stdout pipe:", err)
|
||||
}
|
||||
stderr, err := cmd.StderrPipe()
|
||||
if err != nil {
|
||||
log.Fatal("Error creating stderr pipe:", err)
|
||||
}
|
||||
|
||||
// 开始执行命令
|
||||
if err := cmd.Start(); err != nil {
|
||||
log.Fatalf("Failed to start command: %s", err)
|
||||
}
|
||||
|
||||
// 使用协程异步读取输出
|
||||
go func() {
|
||||
scanner := bufio.NewScanner(stdout)
|
||||
for scanner.Scan() {
|
||||
fmt.Println("STDOUT:", scanner.Text())
|
||||
buffer := make([]byte, 4096) // 创建一个足够大的buffer
|
||||
for {
|
||||
n, err := stdout.Read(buffer)
|
||||
if n > 0 {
|
||||
fmt.Print("STDOUT:", string(buffer[:n])) // 打印实时输出
|
||||
}
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
scanner := bufio.NewScanner(stderr)
|
||||
for scanner.Scan() {
|
||||
fmt.Println("STDERR:", scanner.Text())
|
||||
}
|
||||
}()
|
||||
|
||||
// 等待命令执行完成
|
||||
if err := cmd.Wait(); err != nil {
|
||||
log.Printf("Command finished with error: %v", err)
|
||||
}
|
||||
@ -411,3 +409,25 @@ func upload(localPath string, keyPath string, onComplete func()) {
|
||||
onComplete()
|
||||
}
|
||||
}
|
||||
|
||||
// countTSFiles 统计指定目录下所有 .ts 文件的数量。
|
||||
//
|
||||
// 参数:
|
||||
// directory - 需要统计的目录路径。
|
||||
//
|
||||
// 返回值:
|
||||
// 返回 .ts 文件的数量以及可能出现的错误。
|
||||
func countTSFiles(directory string) (int, error) {
|
||||
var count int // 用于记录 .ts 文件数量
|
||||
err := filepath.Walk(directory, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err // 如果遍历过程中出现错误,则返回该错误
|
||||
}
|
||||
// 检查当前路径项是否为文件且扩展名为 ".ts"
|
||||
if !info.IsDir() && filepath.Ext(info.Name()) == ".ts" {
|
||||
count++ // 如果满足条件,则计数加一
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return count, err // 返回计数结果和可能出现的错误
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user