2011-12-16 39 views
1

我正在使用ffmpeg来解码使用DirectShow显示的rtsp流,我需要将文本添加到每个视频帧,并且还需要添加文本来录制视频。因此,我不能使用DirectShow覆盖文本,因为它不会保存在原始帧上。对文本的要求(未设置)是它可以是各种字体或大小等。从字体添加文本到视频帧

我假设我将需要创建我的文本的原始位图并覆盖此我的原始BGR之上图片。我知道如何编写当前的图像。我不知道的是如何从字体XX,大小,XX,字符串XX到一些原始数据重叠。

有人可以建议我应该做什么或指向正确的方向。我的低级代码是C/C++,但是这是从C#.Net应用程序驱动的。

任何帮助表示赞赏。

谢谢。

回答

1

你必须得到你想要写上的文字,做这样的事情的原始位图的设备上下文(HDC):

CString out = "My String"; 

LOGFONT LogFont; 
memset(&LogFont, 0, sizeof(LOGFONT)); 
LogFont.lfStrikeOut = 0; 
LogFont.lfUnderline = 0; 
LogFont.lfHeight = 12; 
LogFont.lfEscapement = 0; 
LogFont.lfQuality = CLEARTYPE_QUALITY; 
LogFont.lfItalic = FALSE; 
strcpy(LogFont.lfFaceName, "Arial"); 

HFONT font = CreateFontIndirect(&LogFont); 

HDC dc = // Get your DC from the Raw Bitmap 
SelectObject(dc, font); 
SetTextColor(dc, RGB(255, 255, 255)); 
SetBkMode(dc, TRANSPARENT); 
TextOut(dc, 0, 0, out.GetBuffer(), out.GetLength()); 
DeleteObject(font); 

// Release the Raw Bitmap DC 
+0

优秀的感谢。 Unfortunatley我不会有机会在这几个星期内放弃这个机会。 – integra753 2012-01-17 14:21:42