ffmpeg run von der Shell wird ordnungsgemäß ausgeführt, aber nicht beim Aufruf aus .NET

8

Ich versuche, ffmpeg (kompiliert mit Windows mit Cygwin) in einem C # -Programm zu verwenden, indem ich die Process -Klasse verwende, um eine ffmpeg-Instanz zu erzeugen. Ich habe jedoch einen ziemlich seltsamen Fehler gefunden, der nicht viel Sinn ergibt.

Wenn ich ffmpeg direkt von einer Shell aus starte (sei es Cygwins bash, PowerShell, cmd), kann ffmpeg Dateien ohne Probleme richtig dekodieren und neu codieren:

%Vor%

Die Datei spielt gut und ich kann WAV oder jedes andere Format, das ich mag, kodieren. Allerdings, wenn ich ffmpeg von C # mit dem folgenden Code aufrufen:

%Vor%

Dies nach dem Zufallsprinzip erzeugt Fehler in der Ausgabe:

%Vor%

Beachten Sie, dass diese Fehler nicht immer auftreten. Manchmal passieren sie für bestimmte Dateien, manchmal nicht. Ich habe verschiedene Kombinationen von Stream-Weiterleitungen und temporäre Dateien ausprobiert, keiner von ihnen funktioniert. Ich habe auch die Integrität der temporären Dateien überprüft, und alles überprüft. Ich habe sogar die temporäre Datei extrahiert, bevor sie gelöscht wurde, und sie ohne Probleme in der Shell dekodiert.

Irgendwelche Ideen?

Bearbeiten: Ich habe versucht, ffmpeg von einem Shell-Skript ausführen, das über C # ausgeführt wird. Es gibt die gleichen Probleme. Kompilieren von ffmpeg über MinGW gibt das gleiche Problem.

    
Bevin 10.04.2013, 09:36
quelle

1 Antwort

8

Es liegt an der Art, wie Sie die Argumente weitergeben. Tun Sie dies:

%Vor%

Das funktioniert perfekt.

    
Omid 18.04.2013 00:32
quelle

Tags und Links