使用C#将视频MP4音频转换为MP3

时间:2018-01-20 09:38:44

标签: c# ffmpeg data-conversion

我有一些MP4格式的视频,我正在尝试从中提取音频。

我的代码是:

public static void Converter(string toConvert)
{
    toConvert = VideoFile + ".mp4";

    var join = VideoFile.Split("-").ToList();

    VideoFile = string.Format("{0} - {1}", join[0], join[1]);

    var outputFile = VideoFile + ".mp3";
    var mp3Out = "";

    var ffmpegProcess = new Process
    {
        StartInfo =
        {
            UseShellExecute = false,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            CreateNoWindow = true,
            FileName = Directory,
            Arguments = " -i " + toConvert + " -vn -f mp3 -ab 320k output " + outputFile
        }
    };

    ffmpegProcess.Start();
    ffmpegProcess.StandardOutput.ReadToEnd();
    mp3Out = ffmpegProcess.StandardError.ReadToEnd();
    ffmpegProcess.WaitForExit();

    if (!ffmpegProcess.HasExited)
    {
        ffmpegProcess.Kill();
    }
    Console.WriteLine(mp3Out);
}

但是,我收到此错误消息:

  

System.ComponentModel.Win32Exception:'访问被拒绝'

任何想法?

1 个答案:

答案 0 :(得分:2)

根据评论,我了解到Directory变量包含视频路径,您可以在FileName上设置此过程开始信息。 FielName的{​​{1}}应包含ffmpeg可执行文件的路径。例如:

StartInfo

如果我将public static string FFMpegPath { get; private set; } = @"d:\tmp\ffmpeg\ffmpeg-20180119-07a96b6-win64-static\bin\ffmpeg.exe"; var ffmpegProcess = new Process { StartInfo = { .... FileName = FFMpegPath } }; 设置为目录(例如:FileName),我会收到与您相同的错误