2

I am trying to strip audio from a video file using FFMPEG in C#. I know what the code is for doing such an operation (as far as I know) but I am not 100% sure where I need to keep the ffmpe.exe file in my project and how to access it. My code so far is as follows:

public void stripAudioTest(string videoFilename, ExportProgressWindow callback, string destinationAudioFile)
    {
        string FFMPEG_PATH = "*************"; //not sure what to put here??????



        string strParam = " -i " + videoFileName + " -ab 160k -ar 44100 -f wav -vn " +   destinationAudioFile;
        process(FFMPEG_PATH, strParam);
        callback.Increment(100);


    }

    public void process(string Path_FFMPEG, string strParam)
    {
        try
        {
            Process ffmpeg = new Process();

            ffmpeg.StartInfo.UseShellExecute = false;
            ffmpeg.StartInfo.RedirectStandardOutput = true;
            ffmpeg.StartInfo.FileName = Path_FFMPEG;
            ffmpeg.StartInfo.Arguments = strParam;

            ffmpeg.Start();

            ffmpeg.WaitForExit();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }`

If anyone has any ideas please let me know. Anything helps!

4

2 に答える 2

3

必要な絶対パスまたは相対パスを使用できます。

ただし、「現在のディレクトリ」が変更された場合に備えて、相対パスに反対することをお勧めします。

WinForms では、ExecutablePath を使用して、exe を独自の Bin フォルダーに配置できます。

 // winforms
 string FFMPEG_PATH = Path.Combine(
      Path.GetDirectoryName( Application.ExecutablePath), 
      "ffmpeg.exe");

コンソール アプリの場合、Exe パスを取得する簡単な方法が見つかりませんでした。

于 2012-06-26T16:03:04.563 に答える
0

ソリューションに ffmpeg.exe ディレクトリを追加できます。そのBuild ActionようContentに設定Copy to Output Directoryし、Copy always次のように設定します。

ここに画像の説明を入力

これで、実行可能ファイルと一緒に bin ディレクトリに存在することが保証されます。次に、次のようにメソッドを変更できます。

    public void stripAudioTest(string videoFilename, ExportProgressWindow callback, string destinationAudioFile)
    {
        var appDirectory = Path.GetDirectoryName(Application.ExecutablePath);
        var FFMPEG_PATH = Path.Combine(appDirectory, "ffmpeg.exe");
        if (!File.Exists(FFMPEG_PATH))
        {
            MessageBox.Show("Cannot find ffmpeg.exe.");
            return;
        }

        string strParam = " -i " + videoFilename + " -ab 160k -ar 44100 -f wav -vn " + destinationAudioFile;
        process(FFMPEG_PATH, strParam);
        callback.Increment(100);
    }
于 2012-06-26T16:18:02.203 に答える