Ich verwende ffmpeg.exe, um Videodateien in FLV-Format zu konvertieren. Zu diesem Zweck verwende ich einen Windows-Dienst, um den Konvertierungsprozess im Hintergrund auszuführen. Beim Versuch, konvertieren große Dateien (ich erlebte es, wenn die Dateigröße> 14MB) durch Windows-Dienst wird es an der Linie stecken, die den Prozess (dh) beginnt.Ausführen von ffmpeg.exe durch Windows-Dienst schlägt fehl, während mit großen Dateien zu tun
Aber als ich versuchte, ffmpeg.exe direkt von der Eingabeaufforderung auszuführen, funktionierte es ohne irgendwelche Probleme.
Mein Code in Windows-Dienst ist wie folgt:
private Thread WorkerThread;
protected override void OnStart(string[] args)
{
WorkerThread = new Thread(new ThreadStart(StartHandlingVideo));
WorkerThread.Start();
}
protected override void OnStop()
{
WorkerThread.Abort();
}
private void StartHandlingVideo()
{
FilArgs = string.Format("-i {0} -ar 22050 -qscale 1 {1}", InputFile, OutputFile);
Process proc;
proc = new Process();
try
{
proc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
proc.StartInfo.Arguments = FilArgs;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
eventLog1.WriteEntry("Going to start process of convertion");
proc.Start();
string StdOutVideo = proc.StandardOutput.ReadToEnd();
string StdErrVideo = proc.StandardError.ReadToEnd();
eventLog1.WriteEntry("Convertion Successful");
eventLog1.WriteEntry(StdErrVideo);
}
catch (Exception ex)
{
eventLog1.WriteEntry("Convertion Failed");
eventLog1.WriteEntry(ex.ToString());
}
finally
{
proc.WaitForExit();
proc.Close();
}
Wie kann ich aus dieser Situation befreien.
Warum in der Welt würden Sie Videokonvertierungsaufgaben als Windows-Dienst ausführen? –