Я работаю с голосовыми записями.Мне нужно использовать .exe
файл для конвертирования Wav
в .mp3
файл.Все хорошо, я могу выполнить этот exe, но мне нужно что-то делать после того, как процесс завершится с моим выходным файлом .mp3
.Я знаю свой выходной каталог, но я не могу обработать файл MP3, пока он еще не создан.Я знаю, может быть, мне нужно использовать Thread.sleep();
или что-то в этом роде, потому что я не могу поймать файл, пока он не существует.
Вот мой код:
string mp3GuidName = Guid.NewGuid().ToString();
var mp3FilePath = WavFilePath.Replace("finalWavFile", mp3GuidName).Replace("wav", "mp3");
var extrasFilePath = HttpContext.Current.Server.MapPath("/").Replace("DevApp.Web", "Extras");
string strArguments = "/c start " + extrasFilePath + "lame.exe --abr 80 -V5 " + WavFilePath + " " + mp3FilePath;
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = strArguments ;
process.StartInfo = startInfo;
process.Start();
var attactment = new Attachment
{
CreatedOn = DateTime.Now,
UpdatedOn = DateTime.Now,
Title = mp3GuidName +".mp3",
Size = _storageProvider.GetFile(mp3FilePath).GetSize(), // here I am trying to get mp3 file but i cant catch it. Because if this wav files size is huge, then convert process is taking time and my mp3 file is not created yet.
FileExtension = _storageProvider.GetFile(mp3FilePath).GetFileType()
};
attactment.MimeType = _storageProvider.GetMimeType(attactment.FileExtension);
attactment.FileUrl = mp3GuidName+".mp3";// file.GetName();
attactment.AttachmentFolderId = folder.Id;
_attachmentRepository.Add(attactment);
Я пытался использоватьprocess.WaitForExit();
но я не могу решить эту проблему.Я до сих пор не могу получить доступ к mp3-файлу.
так как я могу поймать, когда процесс завершится?
С наилучшими пожеланиями.