This commit is contained in:
itcsx committed 2026-09-21 21:31:16 +08:00
1 parent 7c8af2fb08
commit c10f8347e2
31 files changed
+358 -292

No files matched your search

@@ -1404,7 +1404,7 @@ namespace CloudBuilder.Master.Service
return para.ToArray().ToDelimiteredList(' ');
}
public void TsToM3u8(string documentId, string mp4Url, string m3u8Url, int videoLength = 6)
public void TsToM3u8(string documentId, string mp4Url, string m3u8Url)
{
string para = string.Format(service.Configuration[ServiceSettingsPolicy.FfmpegPictrue], mp4Url, m3u8Url);
try
@@ -1431,7 +1431,7 @@ namespace CloudBuilder.Master.Service
}
//return;
para = string.Format(service.Configuration["Ffmpeg:Arguments"], mp4Url, videoLength, fullName);
para = string.Format(service.Configuration["Ffmpeg:Arguments"], mp4Url, fullName);
//不直接转码视频文件,影响服务器性能,改为在闭时自动生成
//Task.Run(() =>
//{
@@ -1513,16 +1513,30 @@ namespace CloudBuilder.Master.Service
{
log.WriteToFile(exePath + Parameters);
if (string.IsNullOrEmpty(exePath)) return;
Cli.Wrap(exePath)
.WithArguments(Parameters)
.ExecuteAsync();
// 必须等 ffmpeg 真正退出:视频封面(jpg)要在接口返回前落盘,
// 否则前端刷新列表时文件还没生成,<img> 请求 404 且不会自动重试,
// 表现为"上传完看不到封面,手动刷新才有"。
// 最多等 15 秒,超时就交给前端的封面重试机制兜底,不再死等拖住上传请求。
// CliWrap 的 ExecuteAsync 返回 CommandTask<CommandResult>,取它的 Task 才能等待
var task = Cli.Wrap(exePath)
.WithArguments(Parameters)
.ExecuteAsync()
.Task;
if (!task.Wait(TimeSpan.FromSeconds(15)))
{
log.WriteToFile("ffmpeg 执行超时(15s):" + Parameters);
return;
}
log.WriteToFile("ffmpeg 执行完成,ExitCode:" + task.Result.ExitCode);
}
catch (Exception ex)
{
// 截图失败不影响上传本身,这里只记日志,封面由前端重试兜底
log.WriteToFile(ex.Message);
throw new ValidatedException(ex.Message);
}
}
public DmsFileEntity CreateDmsFile(DmsFileEntity dmsFile)