2025-03-16 18:02:40 +08:00

48 lines
1.3 KiB
Go

package core
import (
"ZhenTuLocalPassiveAdapter/config"
"ZhenTuLocalPassiveAdapter/dto"
"ZhenTuLocalPassiveAdapter/fs"
"ZhenTuLocalPassiveAdapter/util"
"fmt"
"os"
"path"
)
func HandleTask(device config.DeviceMapping, task dto.Task) (*dto.FileObject, error) {
adapter := fs.GetAdapter()
fileList, err := adapter.GetFileList(
path.Join(device.Name, task.StartTime.Format("2006"+config.Config.FileName.DateSeparator+"01"+config.Config.FileName.DateSeparator+"02")),
task.StartTime,
)
if err != nil {
return nil, err
}
files := util.FilterAndSortFiles(fileList, task.StartTime, task.EndTime)
if len(files) == 0 {
return nil, fmt.Errorf("没有找到文件")
}
constructTask, err := util.CheckFileCoverageAndConstructTask(files, task.StartTime, task.EndTime, task)
if err != nil {
return nil, err
}
ok := util.RunFfmpegTask(constructTask)
if !ok {
return nil, fmt.Errorf("ffmpeg任务执行失败")
}
outfile, err := os.Stat(constructTask.OutputFile)
if err != nil {
return nil, fmt.Errorf("文件不存在:%s", constructTask.OutputFile)
}
if outfile.Size() < 4096 {
return nil, fmt.Errorf("文件大小过小:%s", constructTask.OutputFile)
}
return &dto.FileObject{
CreateTime: task.EndTime,
EndTime: task.EndTime,
NeedDownload: true,
URL: constructTask.OutputFile,
}, nil
}