J'utilise un service Windows pour exécuter ffmpeg.exe
pour convertir des fichiers vidéo. Je fais cela en regardant un processus dans C# .net. Le problème est queLe service Windows ne démarre pas lors de l'utilisation d'un processus pour exécuter un fichier exe via C# .net
Mon code dans le OnStart() du service Windows est la suivante:
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();
}
quand j'ai essayé de convertir de gros fichiers vidéo (je l'ai vécu lorsque la taille du fichier est> 14MB) comme mentionné ci-dessus le service ne parvient pas à démarrer et est dans le statut "démarrage".
Le ffmpeg lors de l'exécution directe de l'invite de commande fonctionne également pour les fichiers plus volumineux.
Tout me plaît comment résoudre ce ...
Merci pour votre réponse .. Mais j'ai des problèmes avec les opérations de fichiers prennent beaucoup de temps. Après l'exécution de la fonction via le thread comme vous l'avez mentionné, le service commence maintenant normalement. Mais le problème est que ma fonction ne se termine pas. Quand j'ai vérifié mon eventlog il a montré le log que j'ai fait juste avant proc.Start(); (c'est-à-dire, "Commencer le processus de conversion") Comment puis-je me débarrasser de ce problème? – Harun
Le problème avec le service est maintenant résolu et la question d'origine est répondue. Maintenant vous semblez avoir un autre problème avec le traitement des données, donc je vous suggère de créer une nouvelle question sans le service. Je ne suggère pas de mettre à jour cette même question car elle va le polluer. – Aliostad
ok .. Je le ferai. – Harun