我有一些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:'访问被拒绝'
任何想法?
答案 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
),我会收到与您相同的错误