我自己编译的node-freerdp2模块在window 7中会莫名其妙的报一个错误。google上说跟windows的media_foundation相关,更莫名其妙的是,重装系统后100%复现。但是看到最后一个报错,create h264 codec context的时候,要不就把openh264编译进来试试
报错内容
[ERROR][com.freerdp.codec] - QueryInterface(IID_ICodecAPI) failure: 0x80004002
[ERROR][com.freerdp.codec] - mf_init failure
[ERROR][com.freerdp.core.codecs] - Failed to create h264 codec context
openh264的编译
不要使用 这个哥们 的编译方式,这样的方式需要自己添加windows的include和libs文件夹,直接点开Visual Studio Command Prompt即可,环境变量给你设置的好好的,剩下的就是在环境变量添加上msys的路径,据说还需要nasm,也一起加上,最后在openh264的根目录下敲以下命令。
make OS=msvc ARCH=i386 //x86
make OS=msvc ARCH=x86_64 //x64
freerdp的编译
在 上篇文章 的基础上添加参数
-DWITH_OPENH264=ON -DOPENH264_LIBRARY="D:\Playground\C\openh264\openh264.lib" -DOPENH264_INCLUDE_DIR="D:\Playground\C\openh264\include"
最终的编译命令为
cmake . -G"Visual Studio 14 2015 Win64" -DOPENSSL_ROOT_DIR="D:\Tools\vcpkg\packages\openssl-windows_x64-windows" -DLIBUSB_1_INCLUDE_DIR="D:\Tools\vcpkg\packages\libusb_x64-windows\include\libusb-1.0" -DLIBUSB_1_LIBRARY="D:\Tools\vcpkg\packages\libusb_x64-windows\lib\libusb-1.0.lib" -DWITH_OPENH264=ON -DOPENH264_LIBRARY="D:\Playground\C\openh264\openh264.lib" -DOPENH264_INCLUDE_DIR="D:\Playground\C\openh264\include"