Ffmpeg - хром не может загрузить mp4 после обработки сервером

Я использую 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, и они работали правильно, основная причина должна быть связана с ffmpeg и командой Windows

Yan Ge 26.06.2018 09:39

кстати, я могу открыть файл mp4, обработанный ffmpeg на сервере, файл правильно сгенерирован, и я могу удалить его или переименовать

Yan Ge 26.06.2018 09:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
280
0

Другие вопросы по теме