以下Powershell脚本只执行第一个ffmpeg调用,无论哪个是第一个。 ffmpeg和powershell进程都没有完成。但是,停止服务器会导致进程结束,突然出现第二张图片。
Param($InputFile, $OutputFile, $Thumbnail, $Sprites)
$ThumbnailWidth = 120
$ThumbnailHeight = 120
# Thumbnail
ffmpeg -i $InputFile -f image2 -vframes 1 -filter:v "crop=min(iw\,ih):min(iw\,ih), scale=$($ThumbnailWidth):$($ThumbnailHeight)" -crf 18 "$($Thumbnail)\150x150.png"
# Poster
ffmpeg -i $InputFile -f image2 -vframes 1 -filter:v "crop=min(iw\,ih):min(iw\,ih), scale=$($PosterWidth):$($PosterHeight)" -crf 18 "$($Thumbnail)\1000x1000.png"
脚本在ASP.NET应用程序中调用,如下所示:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "powershell.exe";
startInfo.Arguments = String.Format("-executionpolicy RemoteSigned -file \"{0}\" \"{1}\" \"{2}\" \"{3}\" \"{4}\"", scriptPath, fullPath, videoPath, thumbnailPath, sprites);
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Process process = new Process();
process.StartInfo = startInfo;
process.EnableRaisingEvents = true;
process.Exited += delegate
{
// Do some cleaning up
};
process.Start();
有没有人有线索,为什么只有第一个两个ffmpeg调用正在工作,而每个调用似乎都是正确的?
添加process.StandardError.ReadToEnd();
会使脚本按预期完成,但也会阻止它,这是不可接受的。