master
huanghai 5 years ago
parent c45b12014b
commit 77bad271f0

@ -60,10 +60,11 @@ func Cut(source string) {
//2、获取文件后缀
extension := path.Ext(source)
//3、输出的文件通配名称
targetPath := getPath(source,CutPath) + source[0:36] + `_%03d` + extension
targetPath := getPath(source, CutPath) + source[0:36] + `_%03d` + extension
//4、切片
cmdLine := ffmpeg + ` -fflags +genpts -i ` + sourcePath + ` -acodec copy -vcodec copy -f segment -segment_time 300 -reset_timestamps 1 -map 0:0 -map 0:1 ` + targetPath
ShellUtil.ExecCommand(cmdLine)
ShellUtil.Exec(ffmpeg, `-fflags`, `+genpts`, `-i`, sourcePath,
`-acodec`, `copy`, `-vcodec`, `copy`, `-f`, `segment`, `-segment_time`,
`300`, `-reset_timestamps`, `1`, `-map`, `0:0`, `-map`, `0:1`, targetPath)
}
/**
@ -72,13 +73,13 @@ func Cut(source string) {
2020-07-08
*/
func GetAllCutChild(source string) []string {
filepathNames, err := filepath.Glob(filepath.Join(getPath(source,CutPath), "*"))
filepathNames, err := filepath.Glob(filepath.Join(getPath(source, CutPath), "*"))
if err != nil {
fmt.Println(err.Error())
}
resultArray := make([]string, 0)
for i := range filepathNames {
resultArray = append(resultArray, filepathNames[i])
resultArray = append(resultArray, filepathNames[i])
}
return resultArray
}
@ -91,8 +92,8 @@ func GetAllCutChild(source string) []string {
func ConvertToH264Mp4(childMovie string) {
extension := path.Ext(childMovie)
childMovieMp4 := strings.Replace(filepath.Base(childMovie), extension, ".mp4", -1)
cmdLine := ffmpeg + ` -i ` + childMovie + ` -c:v libx264 -strict -2 ` + getPath(childMovie,Mp4Path)+childMovieMp4
ShellUtil.ExecCommand(cmdLine)
ShellUtil.Exec(ffmpeg, `-i`, childMovie, `-c:v`, `libx264`, `-strict`, `-2`,
getPath(childMovieMp4, Mp4Path)+childMovieMp4)
}
/**
@ -128,8 +129,7 @@ func Merge(source string, indexName string) {
if !FileUtil.Exists(Target) {
os.Mkdir(Target, os.ModePerm)
}
cmdLine := ffmpeg + ` -f concat -i ` + indexName + ` -c copy ` + Target + "/" + source[0:36] + ".mp4"
ShellUtil.ExecCommand(cmdLine)
ShellUtil.Exec(ffmpeg, `-f`, `concat`, `-i`, indexName, `-c`, `copy`, Target+"/"+source[0:36]+".mp4")
}
/**

@ -1,26 +1,67 @@
package ShellUtil
import (
"bufio"
"bytes"
"fmt"
"errors"
"log"
"os/exec"
)
//封装一个函数来执行命令
func ExecCommand(cmdLine string) {
cmd := exec.Command("cmd.exe", "/c", cmdLine)
err := cmd.Run()
//
////封装一个函数来执行命令
//func ExecCommand(cmdLine string) {
// cmd := exec.Command("cmd.exe", "/c", cmdLine)
// err := cmd.Run()
//
// var out bytes.Buffer
// var stderr bytes.Buffer
// cmd.Stdout = &out
// cmd.Stderr = &stderr
// if err := cmd.Run(); err != nil {
// fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
// }
// fmt.Println("Result: " + out.String())
//
// cmd.Wait()
// fmt.Printf("%s, error:%v \n", cmdLine, err)
//}
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
if err := cmd.Run(); err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
}
fmt.Println("Result: " + out.String())
/**
DOS
2020-05-18
*/
func Exec(name string, args ...string) error {
cmd := exec.Command(name, args...)
stderr, _ := cmd.StderrPipe()
stdout, _ := cmd.StdoutPipe()
if err := cmd.Start(); err != nil {
log.Println("exec the cmd ", name, " failed")
return err
}
// 正常日志
logScan := bufio.NewScanner(stdout)
go func() {
for logScan.Scan() {
log.Println(logScan.Text())
}
}()
// 错误日志
errBuf := bytes.NewBufferString("")
scan := bufio.NewScanner(stderr)
for scan.Scan() {
s := scan.Text()
log.Println("", s)
errBuf.WriteString(s)
errBuf.WriteString("\n")
}
// 等待命令执行完
cmd.Wait()
fmt.Printf("%s, error:%v \n", cmdLine, err)
if !cmd.ProcessState.Success() {
// 执行失败,返回错误信息
return errors.New(errBuf.String())
}
return nil
}

Loading…
Cancel
Save