【问题标题】:Can I create a motion colorizing pixel shader in WPF?我可以在 WPF 中创建运动着色像素着色器吗?
【发布时间】:2013-07-18 14:00:33
【问题描述】:

我在屏幕上播放了一段正在绘制的线条的视频。是否可以创建一个像素着色器(用于 WPF),在 N 毫秒内将新着色的像素变成某种颜色?

这样,当线条不经常移动并且用户并不总是注视屏幕时,可以向用户指示在屏幕上移动。

【问题讨论】:

    标签: wpf motion-detection pixel-shader


    【解决方案1】:

    您可以使用DirectShow。它是用非托管代码编写的,因此您需要使用此包装器DirectShow.NET 以便在托管环境中运行的 C# 应用程序中使用它(包括示例,即使使用代表增强型视频渲染器的 EVR,这意味着更好的视频质量)。当您将控制句柄传递给用于设置视频输出的包装方法时,您需要一个 WinForms 控件,因为只有从它们您才能获得所需的控制句柄。然后,当您需要在 WPF 应用程序中使用某些 WinForms 控件时,您可以使用为此类情况提供的 WindowsFormsHost 控件在 WPF 应用程序中托管该 WinForms 控件。它只是理论,所以我不知道它是否适合您。

    顺便说一句:整个想法是基于事实,DirectShow 只是一些由分离的过滤器构成的查询。渲染器是一个过滤器(EVR、VMR-7、VMR-9)。声音播放器是一个过滤器。它们通过引脚连接。它就像一个图表。电子模式或类似的东西。您可以在其中放置例如Grey scale 过滤器。瞧,视频输出将是灰度的。有很多教程。并完成了简单的过滤器。不幸的是,过滤器必须用 C++ 编写:(

    PS:我从来没有说过这会很容易:D

    【讨论】:

    • 是的,我想绕过使用直接显示来做到这一点,但我想这是我唯一的选择。
    • 根据this 看来,在 VLC 媒体播放器中,他们添加了着色器支持。 There 你可以找到 VLClib C# 包装器,它甚至可以让你使用着色器。它是比 DirectShow 更好的选择,因为它非常易于使用和理解。所以我建议你先试试 vlclib。
    • 也许我找到了另一个解决方案。绝对简单的解决方案。你可以找到它hereThis 是对我之前评论的补充。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多