我们需要使用ffmpeg二进制文件和c#项目将图像(来自摄像机直播流)转换为视频流。
我们在我们的系统中安装了Aforge.net
框架2.2.4.1(Windows 7,32位)并使用Aforge.video.Ffmpeg
dll实现了视频录制编码。它正如我们预期的那样正常工作。然后我们尝试了工作64位系统中的同一项目。
它给了我错误
“无法加载文件或程序集'AForge.Video.FFMPEG.dll'或其中之一 它的依赖关系。不是有效的Win32应用程序。(例外 HRESULT:0x800700C1)“。
我们通过一些论坛找到了将目标平台更改为x86以32位运行的解决方案。但由于其他原因,我们应该留在x64
作为我们的平台目标。并基于另一篇文章在论坛中,我们从此链接“http://ffmpeg.zeranoe.com/builds/”下载了64位ffmpeg
库,并将64位版本的avcodec-53.dll,avdevice-53.dll, avfilter-2.dll,avformat-53.dll, avutil-53.dll, swscale-2.dll
替换为我的项目输出文件夹。当我们尝试制作Aforge时。通过使用Aforge.net框架给出的源代码,64位版本的video.ffmpeg.dll,build无法成功。
我们认为这个源代码是为win32平台构建的,我们试图仅通过重新定位64位ffmpeg二进制文件来获取Aforge.Video.Ffmpeg dll。我们不确定是否需要包含任何其他依赖文件来自ffmpeg 制作dll的二进制文件。是否有任何Aforge.net框架设置可用于生成64位版本的Aforge.Video.ffmpeg dll?
答案 0 :(得分:0)
从文档中:你必须为x86编译。
答案 1 :(得分:0)
首先,您必须获得Aforeg.Video.FFMPEG的64位库。它的URL是
https://aforgeffmpeg.codeplex.com/(目前编写此CodePlex只是说他们正在关闭)。
您也可以从https://ffmpeg.zeranoe.com/builds/获取FFMPEG库。必须将所有这些FFMPEG dll复制到将执行.exe或二进制文件的目录。设置特别注意,它们必须避免存在x86版本。
您必须将应用程序编译为x64(No 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/
描述答案 2 :(得分:-1)
尝试更改Framework,将其从4.0更改为3.5帮助我