2011-04-12 47 views
1

我想使用c#在模拟电视流上放置新闻选取框,我可以使用DirectShow流模拟电视,但我无法弄清楚如何将它与旋转文字混合,我应该创建一个过滤器?或者我必须使用除DirectShow之外的其他技术?模拟电视新闻选择框 - C#

回答

3

DirectShow是这样做的最简单的方法,但它确实有一点学习曲线,特别是来自C#。维基百科页面为您提供了DirectShow的基本概述。

DirectShow工具在最新的Windows SDK中可用。使用C++进行DirectShow编程更直接,但可以通过COM interop或DirectShow.net(我还没有尝试过)很容易地使用DirectShow。如果使用COM互操作下面的文章是有帮助的:

http://blogs.msdn.com/b/ericgu/archive/2004/09/20/232027.aspx

您可以使用VMR覆盖过滤器,如果动画性能是不够顺畅。请参阅下面的文章

http://www.codeproject.com/KB/audio-video/VideoPicture.aspx
http://www.codeproject.com/KB/audio-video/Ticker.aspx
http://msdn.microsoft.com/en-us/library/dd407344(v=vs.85).aspx

或者你需要编写自己的过滤器呈现每帧调整它的位置在同步与视频帧的时间戳上的文字。如果你只需要做到这一点你自己的应用程序内,则下列方法可能是最简单的

http://www.sichbo.ca/Free_Code/100_C_Sharp_directshow_filters

微软官方推荐的DirectShow过滤器应该用C + +中创建出于性能的考虑,但覆盖滚动文本应该在C#OK因为如果你仔细编程,瓶颈将是用于覆盖文本的API。

0

实际上,您不必编写过滤器在视频上绘制一些文字。只需制作一张图表,其中未压缩的视频会通过采样卡(标准DirectShow滤镜之一),为采样卡设置回调,并且可以修改回调中的视频数据。使用DirectShow.NET在C#中执行操作非常简单,但由于编组并非最佳。您可以首先在GraphEditPlus中构建这样一个图形,然后它将向您展示如何构建此图形并使用采样器的C#或C++源代码。