master
huanghai 5 years ago
parent f372f21272
commit c45b12014b

@ -7,17 +7,19 @@ import (
func main() {
//源文件
source := "B7318F5D-46B8-4AA1-8811-1A9D65528E19.wmv"
//1、对视频文件进行切片
//1、目录实始化
ConvertUtil.InitDir(source)
//2、对视频文件进行切片
ConvertUtil.Cut(source)
//2、切片完成后尝试进行转码
var childMovie = ConvertUtil.GetAllCutChild(source)
for i := range childMovie {
ConvertUtil.ConvertToH264Mp4(childMovie[i])
}
//3、生成拼接的索引文件
indexName := ConvertUtil.GenerateIndexTxt(source, childMovie)
//4、合成MP4
ConvertUtil.Merge(source, indexName)
////3、生成拼接的索引文件
//indexName := ConvertUtil.GenerateIndexTxt(source, childMovie)
////4、合成MP4
//ConvertUtil.Merge(source, indexName)
//5、清除垃圾
//ConvertUtil.ClearRubbish(source)
}

@ -18,10 +18,37 @@ var ffmpeg string
func init() {
runDir, _ = os.Getwd()
ffmpeg = runDir + `\ffmpeg\ffmpeg.exe`
}
const CutPath = "Cut/"
const Mp4Path = "Mp4/"
const IndexPath = "Index/"
const AllPath = "/"
/**
2020-07-09
*/
func getPath(source string, p string) string {
return runDir + `/Working/` + source[0:2] + "/" + source[0:36] + "/" + p
}
/**
2020-07-09
*/
func InitDir(source string) {
//1、删除旧目录
os.RemoveAll(getPath(source, AllPath))
//2、创建新目录
os.MkdirAll(getPath(source, CutPath), os.ModePerm)
os.Mkdir(getPath(source, Mp4Path), os.ModePerm)
os.Mkdir(getPath(source, IndexPath), os.ModePerm)
}
/**
@ -33,27 +60,7 @@ func Cut(source string) {
//2、获取文件后缀
extension := path.Ext(source)
//3、输出的文件通配名称
workingPath := runDir + `/Working/` + source[0:2] + "/"
if !FileUtil.Exists(workingPath) {
os.Mkdir(workingPath, os.ModePerm)
}
workingPath = workingPath + source[0:36] + "/"
if !FileUtil.Exists(workingPath) {
os.Mkdir(workingPath, os.ModePerm)
}
targetPath := workingPath + source[0:36] + `_%03d` + extension
//尝试删除已存在的视频
var i = 0
for {
var f = workingPath + source[0:36] + "_" + fmt.Sprintf("%03d", i) + extension
if FileUtil.Exists(f) {
os.Remove(f)
} else {
break
}
i++
}
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)
@ -65,16 +72,14 @@ func Cut(source string) {
2020-07-08
*/
func GetAllCutChild(source string) []string {
filepathNames, err := filepath.Glob(filepath.Join(runDir+`/Working/`+source[0:2]+"/"+source[0:36]+"/", "*"))
filepathNames, err := filepath.Glob(filepath.Join(getPath(source,CutPath), "*"))
if err != nil {
fmt.Println(err.Error())
}
resultArray := make([]string, 0)
for i := range filepathNames {
if strings.Index(filepathNames[i],"_")>=0{
resultArray = append(resultArray, filepathNames[i])
}
}
return resultArray
}
@ -85,14 +90,11 @@ func GetAllCutChild(source string) []string {
*/
func ConvertToH264Mp4(childMovie string) {
extension := path.Ext(childMovie)
childMovieMp4 := strings.Replace(childMovie, extension, ".mp4", -1)
//如果存在则删除之
if FileUtil.Exists(childMovieMp4) {
os.Remove(childMovieMp4)
}
cmdLine := ffmpeg + ` -i ` + childMovie + ` -c:v libx264 -strict -2 ` + childMovieMp4
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)
}
/**
@ -111,6 +113,7 @@ func GenerateIndexTxt(source string,childMovie []string)string{
FileUtil.WriteLines(content, indexName)
return indexName
}
/**

@ -1,6 +0,0 @@
file 'B7318F5D-46B8-4AA1-8811-1A9D65528E19.mp4'
file 'B7318F5D-46B8-4AA1-8811-1A9D65528E19.mp4'
file 'B7318F5D-46B8-4AA1-8811-1A9D65528E19_000.mp4'
file 'B7318F5D-46B8-4AA1-8811-1A9D65528E19_000.mp4'
file 'B7318F5D-46B8-4AA1-8811-1A9D65528E19_001.mp4'
file 'B7318F5D-46B8-4AA1-8811-1A9D65528E19_001.mp4'
Loading…
Cancel
Save