我想用c#在模拟电视流上放一个新闻选框,我可以使用DirectShow流式传输模拟电视,但我不知道如何将它与旋转文本混合,我应该创建一个过滤器吗?或者我必须使用除DirectShow之外的其他技术?
答案 0 :(得分:3)
DirectShow是最简单的方法,但它确实有一点学习曲线,特别是来自C#。维基百科页面为您提供了DirectShow的基本概述。
最新的Windows SDK中提供了DirectShow工具。使用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
Microsoft官方建议,出于性能原因,应使用C ++创建DirectShow过滤器,但在C#中叠加滚动文本应该没问题,因为如果您仔细编程,瓶颈将是用于覆盖文本的API。
答案 1 :(得分:0)
实际上,您不必编写过滤器来在视频上绘制一些文字。只需绘制一个图表,其中未压缩视频通过样本采集器(标准DirectShow过滤器之一),为样本采集器设置回调,您将能够修改回调中的视频数据。使用DirectShow.NET在C#中执行它非常容易,但由于编组而不是最佳。您可以先在GraphEditPlus中构建这样的图形,然后它将向您展示如何构建此图并使用样本抓取器的C#或C ++源代码。