Я использую C# для написания серверной части вместе с ffmpeg для работы с некоторыми видеофайлами. После того, как я загружаю видеофайл с клиента и записываю поток в новый файл, я не мог использовать ffmpeg для извлечения некоторой части исходный файл, код, как показано ниже
string cmd = "-ss " + string.Format("{0:F}", startTime) + " -t " + string.Format("{0:F}", endTime - startTime) + " -i " + filePath + " -vcodec copy -acodec copy " + filePath + " -y";
он показывает ошибку [mov, mp4, m4a, 3gp, 3g2, mj2 @ 000002336e7da340] поток 1, смещение 0x8fab: частичный файл; при обработке ввода обнаружены неверные данные
после расследования я обнаружил, что файл, который я упомянул как filePath (на стороне сервера), может быть занят командой Windows (я использовал процесс для работы с ffmpeg)
Process myPro = new Process();
myPro.StartInfo.FileName = WebConfigurationManager.AppSettings["FFMPEGPath"];
myPro.StartInfo.UseShellExecute = false;
myPro.StartInfo.RedirectStandardInput = true;
myPro.StartInfo.RedirectStandardOutput = true;
myPro.StartInfo.RedirectStandardError = true;
myPro.StartInfo.CreateNoWindow = true;
myPro.Start();
myPro.StandardInput.AutoFlush = true;
myPro.WaitForExit();
myPro.Close();
myPro.Dispose();
return output;
Я решил создать новый файл для выполнения операции извлечения, и он работает.
string cmd = "-ss " + string.Format("{0:F}", startTime) + " -t " + string.Format("{0:F}", endTime - startTime) +
" -i " + filePath + " -vcodec copy -acodec copy " + filePathfull + " -y";
Но когда я попытался отправить обратно имя файла с помощью ajax клиенту и использовать тег видео в html, он не смог загрузить файл mp4, я думаю, возможно, файл mp4, созданный ffmpeg, все еще занят системным потоком, у вас когда-нибудь встречал такую ситуацию? Как это можно было исправить? большое спасибо!
кстати, я могу открыть файл mp4, обработанный ffmpeg на сервере, файл правильно сгенерирован, и я могу удалить его или переименовать





Я попытался разместить некоторые файлы mp4 на сервере, НЕ обрабатываемые ffmpeg, и они работали правильно, основная причина должна быть связана с ffmpeg и командой Windows