如何在视频采集时叠加字幕和台标

1. OSD 原理

  1. 字幕就是一串字符,利用 GDI+ 实现将字符串转换成 bitmap 图像,台标同理,直接将给定的图标路径导入到 bitmap 图像中
  2. MWCapture SDK 中 MWUploadImageFromVirtualAddress() 可以从系统内存上载图像到采集设备的板载内存中,以实现 OSD 的叠加
  3. MWCaptureVideoFrameWithOSDToVirtualAddress() 和 MWCaptureVideoFrameToVirtualAddressEx() 可以实现将叠加了OSD 图像的视频数据采集到目标内存中

2. OSD 调用流程

MWOpenChannel() → MWStartVideoCapture() → MWCreateImage() → MWUploadImageFromVirtualAddress() → MWCaptureVideoFrameWithOSDToVirtualAddress()

示例方法中

  1. MWCreateImage() 根据叠加的 OSD 大小创建一张图像,返回一个 OSD 句柄,其中 cx、cy宽高参数不可以为0;
  2. MWUploadImageFromVirtualAddress() 需要指定 OSD 图像的宽、高,要上传到采集设备中的矩形位置等参数,尤其在上载 OSD 图像数据时候,台标的图片格式错误会导致 GDI+ 制作bitmap 图像会失败,最终 OSD 叠加失败;

示例 Examples \ Applications \ OSDPreview 有对 OSD 的调用示范。