在UWP中,使用来自设备摄像头的视频捕捉进行面部追踪似乎非常简单。但我需要在视频播放时使用它。有人有任何建议如何实现这一点,或者有其他替代方法可以达到类似的效果吗?
然而,我希望代码能在本地运行(在同一台机器上或本地网络服务器上),而不是调用Web服务并持续不断地发送数千个帧。
*最简单的方法是:1. 将视频播放转换为捕捉流2. 使用追踪器检测面部并绘制矩形3. 将结果显示为视频*
我知道步骤2完全由微软处理。我认为步骤3很简单。那么有人知道如何实现步骤1吗?*
回答:
你不能将视频播放转换为捕捉流,但你可以通过在MediaPlayer的AddVideoEffect方法中注册MediaPlayer的自定义视频效果来获取VideoFrames。
自定义视频效果是一个实现IBasicVideoEffect的类。它的ProcessFrame方法将传递一个ProcessVideoFrameContext对象,该对象包含一个你可以传递给FaceTracker的InputFrame,以及一个你可以用FaceTracker的矩形修改的OutputFrame。
请参阅自定义视频效果文档,了解如何在你的应用中创建和注册效果的演练。为了举例说明,它展示了将效果应用于MediaComposition剪辑而不是正在运行的MediaPlayer,但相同的效果类可以在两个地方使用。