64位.NET Framework 4.8应用使用FFmpeg.AutoGen 7.0调用FFmpeg报错
解决FFmpeg.AutoGen 7.0在.NET Framework 4.8中调用ffmpeg方法抛出NotSupportedException的问题
可能的原因及对应解决步骤
1. 二进制文件架构不匹配
- 确认你引用的FFmpeg二进制文件是64位版本,和你的64位应用架构保持一致,32位FFmpeg会导致绑定调用失败。
- 检查项目平台目标:右键项目→属性→生成→平台目标,设置为
x64,不要用Any CPU(避免运行时自动切换到32位环境)。
2. 初始化流程冲突
- 移除
DynamicallyLoadedBindings.Initialize();调用,FFMpegBinariesHelper.RegisterFFMpegBinaries()已经完成了绑定初始化工作,重复初始化会引发冲突。 - 修改后的构造函数示例:
public VideoPlayer() { InitializeComponent(); // 手动指定FFmpeg二进制文件路径,比自动注册更可靠 var ffmpegBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FFmpeg", "bin"); FFMpegBinariesHelper.RegisterFFMpegBinaries(ffmpegBinPath); Console.WriteLine($"FFmpeg version info: {ffmpeg.av_version_info()}"); }
3. FFmpeg与FFmpeg.AutoGen版本不兼容
- 确保使用的FFmpeg二进制文件是7.0.x版本,和FFmpeg.AutoGen 7.0严格对应,版本不匹配会导致方法绑定失效。
- 可通过命令行执行
ffmpeg -version确认FFmpeg版本号。
4. 文件加载或权限问题
- 将FFmpeg/bin目录下的所有DLL复制到应用程序输出目录(如
bin\x64\Debug),避免路径加载异常。 - 确认应用程序有权限访问FFmpeg文件目录,权限不足会导致DLL加载失败。
5. 项目不安全代码设置
- 确保项目启用了不安全代码:右键项目→属性→生成→勾选“允许不安全代码”,你的代码中使用了
unsafe关键字和指针,必须开启该设置。
内容的提问来源于stack exchange,提问作者auetic
相关产品推荐
相关产品推荐

