细数AForge.Video.FFMPEG使用过程中踩的坑及解决方案

细数AForge.Video.FFMPEG使用过程中踩的坑及解决方案
在后台代码中只要有引用到AForge.Video.FFMPEG都不用等到具体调用,只要运行直接就报错
在这里插入图片描述

解决方案:

发生这个问题的原因比较简单,因为AForge.Video.FFMPEG使用VC++写的,编译的时候已经被编译成本地代码,而C#一般目标平台都是“Any CPU”,所以会发生这个问题。
解决方案就是不再选择使用“Any CPU”作为目标平台,改成“x86”或者“x64”。因为x86可以跑在x64上,而x64不能在x86上跑,所以选择x86。
点击Visual Studio上方的配置管理器中“AnyCPU”旁的下按钮,在下拉菜单里选择“配置管理器”。
在新打开的“配置管理器”窗口里,单击“活动解决方案平台§:”下的下来菜单,选择“<新建…>”(如果已经有x86平台,则直接选择即可)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置好只好再次进行调试发现还是报错而根据报错提示发现是由于缺少依赖项造成的
在这里插入图片描述
在通过NuGet引用成功之后可以看到AForge.Video.FFMPEG文件夹下有一个readme.txt,打开可以看到
“ 使用前,需要将Externals文件夹下的所有文件拷贝到项目输出路径下。如:bin\x86\Debug。” 的提示语,这里按照他的说法操作一下
在这里插入图片描述
在这里插入图片描述
因为这里使用的是x86作为目标平台调试,所以文件必须复制bin\x86\Debug下
在这里插入图片描述
复制完毕再次运行,又报错了,
在这里插入图片描述
造成此报错的原因呢也好理解,因为我的项目使用的是 .NET Framework,Version=v4.6.1,但是AForge.Video.FFMPEG.dll使用的是 .NET Framework 2.0,在4.0版本以前由于程序运行环境本质还是2.0,并且2.0向下兼容1.0和1.1,但是升级4.0以后,.NET有了的调整,所以以前版本的项目或dll需要运行到4.0以后的版本上时需要在配置文件中指定此应用程序支持的公共语言运行时版本和启用.net Framework 2.0运行时激活策略。
在这里插入图片描述

而关于这个问题在官网上面由提出解决方案,按照官网的说法这里需要改config配置
https://learn.microsoft.com/zh-cn/dotnet/framework/configure-apps/file-schema/startup/supportedruntime-element

    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>

添加**useLegacyV2RuntimeActivationPolicy=“true”**特性

    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>

在这里插入图片描述
在这里插入图片描述
然后在次运行,好的完美解决报错问题,接下来就是功能具体实现了,这里就不说了
在这里插入图片描述
其他踩坑可参考以下三篇文章

【AForge.Net】FFMPEG库的使用
细说使用AForge.Video.FFMPEG的几个坑
c#屏幕录制(经典)(含源码和AForge.Video.FFMPEG.DLL)及填坑办法

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值