ffmpeg - chrome не смог загрузить mp4 после обработки сервером - PullRequest
0 голосов
/ 26 июня 2018

Я использую 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: частичный файл; при обработке ввода * 1004 обнаружены неверные данные

после исследования я обнаружил, что файл, который я упомянул как filePath (на стороне сервера), может быть занят командой windows (я использовал Process для работы с 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, все еще занят системным потоком Вы когда-нибудь встречались с такой ситуацией? Как это можно исправить? Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...