对 Accord.video.FFMPEG 的 x86 32 位支持

Posted

技术标签:

【中文标题】对 Accord.video.FFMPEG 的 x86 32 位支持【英文标题】:x86 32 bit support for Accord.video.FFMPEG 【发布时间】:2021-05-28 20:58:01 【问题描述】:

雅阁 3.8.2 版

我正在使用 Accord、Accord.video、Accord.video.FFMPEG Dll 来捕获屏幕,我的代码被编译为 ANYCPU,在 64 位机器上一切正常,但在 32 位机器上我遇到了问题下面是我得到的例外。

Exception occurred while loading the assemblies Could not load file or assembly 'Accord.Video.FFMPEG.dll' or one of its dependencies.  is not a valid Win32 application. (Exception from HRESULT: 0x800700C1),    at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
   at System.Reflection.Assembly.LoadFile(String path)
   at ProHance.ProbeTray.Program.MPvcUlyJUg(Object  , ResolveEventArgs  )

【问题讨论】:

【参考方案1】:

    将库项目添加到解决方案中。

    将 nuget 包 Accord.Video.ffmpeg(或 x64)添加到库项目 (不要更改平台目标,如果您的环境是 x64,请使用 x64 版本,否则使用 x86)

    将这些引用的本地副本更改为错误协议 ,Accord.Video ,Accord.Video.ffmpeg

    复制 packages\Accord.Video.FFMPEG.3.8.0\build + 中的所有文件 Accord ,Accord.Video , Accord.Video.ffmpeg 到您的输出文件夹 像 bin\ffmpeg

    将这些行放在 Application_Start 中。

var path = Thread.GetDomain().BaseDirectory + "bin\ffmpeg\";
Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";"+ path);
AppDomain.CurrentDomain.AppendPrivatePath(path);

【讨论】:

以上是关于对 Accord.video.FFMPEG 的 x86 32 位支持的主要内容,如果未能解决你的问题,请参考以下文章

数据库项目 - “无法解析对来自名为 x 的源的外部元素的引用

x:FieldModifier 对 C# 语言无效?

Python:根据升序x数组对y值数组进行排序

x|0 如何对 JavaScript 中的数字进行下限?

对 SQL 表中的 x 到 x+n 列求和

vert.x 事件总线能否取代对 Kafka 的需求?