我使用以下方法从上传的视频中提取图像并将图像放入文件夹中。
private string GeneratePreviewImageMP4(string FileName, HttpPostedFile file, string ProperPath)
{
string inputfile = System.IO.Path.Combine(Server.MapPath(ProperPath), file.FileName);
string ext = System.IO.Path.GetExtension(FileName);
string thumbpath = AppDomain.CurrentDomain.BaseDirectory + "Reports\\TrainingLibrary\\Videothumbnails\\";
string thumbname = thumbpath + FileName.Replace(ext, "") + ".jpg";
string thumbargs = "-i " + inputfile + " -ss 00:00:25.435 -qscale:v 2 -vframes 1 " + thumbname;
Process thumbproc = new Process();
thumbproc.StartInfo.FileName = "C:\\FFMPEG\\Bin\\ffmpeg.exe";
thumbproc.StartInfo.Arguments = thumbargs;
thumbproc.StartInfo.UseShellExecute = false;
thumbproc.StartInfo.CreateNoWindow = false;
thumbproc.StartInfo.RedirectStandardOutput = false;
try
{
thumbproc.Start();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
thumbproc.WaitForExit();
thumbproc.Close();
return FileName.Replace(ext, ".jpg");
}
问题是,一旦提取图像,我就会被锁定在文件夹之外。没有机构拥有该文件夹的管理员权限。我们必须重新启动服务器才能恢复对该文件夹的访问权限。
这只是在某些时候,大部分时间都很好,但十分之一会有问题。
现在有人为什么会这样?它是否播放视频以提取图像,但不会停止视频?
答案 0 :(得分:0)
尝试使用锁定:
lock (_aStaticObject)
{
//All the code above
}
警告一句,在http请求中使用锁定可能对性能不利(你不应该破坏服务器的线程),这就是为什么这类东西属于一个工作。