3

我们需要使用 ffmpeg 二进制文件和 c# 项目将图像(来自摄像机实时流)动态转换为视频流。

Aforge.net我们在我们的系统(windows 7,32 位)中安装了框架 2.2.4.1 并使用Aforge.video.Ffmpegdll 实现了视频录制编码。它工作正常,正如我们预期的那样。然后我们尝试在 64 位系统中工作相同的项目。

它给了我错误

“无法加载文件或程序集 'AForge.Video.FFMPEG.dll' 或其依赖项之一。不是有效的 Win32 应用程序。(来自 HRESULT 的异常:0x800700C1)”。

我们浏览了一些论坛,找到了将目标平台更改为 x86 以在 32 位上运行的解决方案。但由于某些其他原因,我们应该保留x64作为我们的平台目标。根据论坛中的另一篇帖子,我们下载了 64 位ffmpeg来自此链接“ http://ffmpeg.zeranoe.com/builds/ ”的库并将 64 位版本替换avcodec-53.dll,avdevice-53.dll, avfilter-2.dll,avformat-53.dll, avutil-53.dll, swscale-2.dll到我的项目输出文件夹中。当我们尝试使用 64 位版本制作 Aforge.video.ffmpeg.dll 时Aforge.net 框架给出的源代码,构建不成功。

我们认为此源代码是为 win32 平台构建的,我们尝试仅通过单独替换 64 位 ffmpeg 二进制文件来获取 Aforge.Video.Ffmpeg dll。我们不确定是否需要包含除 ffmpeg 之外的任何其他依赖文件制作 dll 的二进制文件。是否有任何 Aforge.net 框架设置可用于生成 64 位版本的 Aforge.Video.ffmpeg dll?

4

3 回答 3

0

首先,您必须获得 Aforeg.Video.FFMPEG 的 64 位库。它的 URL 是
https://aforgeffmpeg.codeplex.com/(在写这个 CodePlex 的时候只是说他们正在关闭)。

您还可以从https://ffmpeg.zeranoe.com/builds/获取 FFMPEG 库。所有这些 FFMPEG dll 都必须复制到将执行 .exe 或二进制文件的目录。特别注意存在必须避免的 x86 版本。

您必须将您的应用程序编译为 x64(无 AnyCPU)。

而且你必须设置 App.config

<configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <runtime> <NetFx40_LegacySecurityPolicy enabled="true" /> </runtime> </configuration>

这由https://bydaniel.wordpress.com/2017/05/01/aforge-net-ffmpeg/描述

于 2017-06-19T03:07:19.180 回答
0

从文档中:您必须针对 x86 进行编译。

于 2016-08-25T10:13:07.673 回答
-1

尝试更改框架,将其从 4.0 更改为 3.5 对我有帮助

于 2014-08-31T19:08:25.117 回答