首先,我的母语不是英语,很抱歉可能出现错误。
我需要为MediaCapture使用我自己的视频效果,这是为WS 8.1和WP 8.1制作的,而不是我现在开始将其移植到Win 10。我的视频效果作为运行时组件(dll),在这个模块中我有ActivatableClass,它正在工作!对于win 8.1,我修改了清单并添加了我的组件的引用,AddEffectAsync方法,我使用了这个参数
m_mediaCaptureMgr->AddEffectAsync(Windows::Media::Capture::MediaStreamType::VideoPreview,"OcvComponent.SmileDetector",nullptr)
在Win 10中,我在类似代码中崩溃
_mediaCapture->AddVideoEffectAsync(ref new Effects::VideoEffectDefinition("OcvComponent.SmileDetector"), Capture::MediaStreamType::VideoPreview)
我已经在尝试这种老的、好的工作方法了,结果也是崩溃
_mediaCapture->AddEffectAsync(Capture::MediaStreamType::VideoPreview,"OcvComponent.SmileDetector", nullptr)
这两种情况下的清单我都用这个修改
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>OcvComponent.dll</Path>
<ActivatableClass ActivatableClassId="OcvComponent.SmileDetector" ThreadingModel="both" />
</InProcessServer>
</Extension>
应用程序崩溃,出现此消息
这个崩溃出现在ActivatableClass构造函数使用之前,所以断点对我没有帮助。
此外,我应该告诉大家,我称之为视频效果的应用程序是从github.com/Microsoft/Windows-universals-samples/tree/master/samples/cameraVideoStabilitation/cpp上获取的样本(很抱歉链接不正确,声誉不够),我不明白为什么,但我通常无法将该项目的参考添加到我的组件中,所以我用这个修改了文本编校器中的项目文件
<ItemGroup>
<ProjectReference Include="..OcvComponentOcvComponent.vcxproj">
<Project>{E84D5530-529F-49B4-811C-3D7FE0902B7E}</Project>
</ProjectReference>
我认为这些事情是可以联系在一起的。
请帮我解决这个问题使用C++语言,Visual Studio 2015,Win 10
不确定您是否仍然对此感兴趣。。但也许是对其他人。在此处找到此:https://english.r2d2rigo.es/2016/03/10/creating-custom-video-effects-in-uwp-apps/
TLDR:
- 使用运行时组件库(而不是任何其他项目类型)
- 使你的效果密封
- 你不需要再更改清单了
欢呼,