You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#提取MP4音频为MP3时遇Win32Exception拒绝访问错误

解决FFmpeg调用时的"Access is denied"错误

这个System.ComponentModel.Win32Exception: 'Access is denied'错误基本都和FFmpeg路径配置、文件权限或者进程启动参数有关,咱们一步步来排查解决:

1. 先确认FFmpeg的路径是否配置正确

你的代码里写了FileName = Directory,这里的Directory必须是FFmpeg可执行文件的完整绝对路径(比如C:\ffmpeg\bin\ffmpeg.exe),而不是文件夹路径。如果只填了文件夹,程序会尝试去执行文件夹本身,这肯定会触发权限拒绝。

修正示例:

// 替换成你本地ffmpeg.exe的实际路径
string ffmpegExePath = @"D:\Tools\ffmpeg\bin\ffmpeg.exe";
var ffmpegProcess = new Process {
    StartInfo = {
        FileName = ffmpegExePath,
        // 其他配置项保持不变
    }
};

2. 检查文件与文件夹的访问权限

  • 确保你的程序能读取目标MP4文件:如果视频文件在受保护的文件夹(比如C:\Program Files)或者被其他程序占用(比如正用播放器打开),都会导致读取权限被拒绝。
  • 确保程序能写入输出MP3文件:尽量不要把输出目录选在系统目录(比如C:\Windows),换成用户自己的文件夹(比如Environment.GetFolderPath(Environment.SpecialFolder.Desktop)),避免权限限制。

3. 修正FFmpeg的启动参数

你的Arguments里多了个多余的output关键字,FFmpeg不需要这个,而且路径最好用双引号包裹,避免路径含空格时解析出错:

Arguments = $"-i \"{toConvert}\" -vn -f mp3 -ab 320k \"{outputFile}\""

参数格式错误也可能间接导致进程启动失败,触发权限类的异常提示。

4. 尝试提升程序运行权限

如果以上都没问题,右键你的程序,选择以管理员身份运行试试。如果这样能正常执行,说明当前用户权限不足以访问某些资源,要么调整文件存放路径,要么给程序添加必要的权限配置。

额外调试小技巧

把代码里拼接好的FFmpeg完整命令行打印出来,手动在命令提示符里执行一遍:

ffmpeg.exe -i "你的视频路径.mp4" -vn -f mp3 -ab 320k "输出音频路径.mp3"

如果手动执行也报错,问题就出在FFmpeg参数或文件本身;如果手动执行正常,再回到代码里排查进程启动的配置细节。

内容的提问来源于stack exchange,提问作者Tom Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:51:40