我想在不使用自动提供字幕的库中插入字幕到媒体文件中(如DirectShow)
我习惯使用窗口桌面的绘图手柄进行绘制,但它无法正常工作。我认为这是因为更新的速度......对吧? 无论如何,是否有任何功能或方法来绘制媒体文件或获取其叠加处理?
[DllImport("user32.dll")]
static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgn, uint flags);
[DllImport("user32.dll")]
static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc);
public void SubtitleDraw()
{
IntPtr hWnd = GetDesktopWindow();
IntPtr hDc = GetDCEx(hWnd, IntPtr.Zero, 1027);
Font font1 = new Font("Times New Roman", 24, FontStyle.Regular,GraphicsUnit.Pixel);
Point pt = new Point(40, 375);
PointF pointF1 = new PointF();
pointF1 = PlayerForm.ActiveForm.PointToScreen(pt);
Graphics g = Graphics.FromHdc(hDc);
g.DrawString(SubtitleText, font1, Brushes.Black, pointF1);
ReleaseDC(hWnd, hDc);
}
答案 0 :(得分:0)
如果你想以任何体面的帧速率播放视频,你会想要研究DirectShow和过滤器。有一些分散的文档可以解释如何与.NET中的DirectShow过滤器图形进行交互,但它非常缺乏。
如果您在媒体控件中播放视频,它几乎总是以叠加方式播放视频,因此您在“顶部”绘制的任何内容都将位于控件的顶部,但仍位于“叠加层”下方“真正的视频在哪里播放。