常用於顯示公司 LOGO、日期時間等資訊,如下圖黃色區域所示:

OnSettings()USHORT Format1[40] = {48, 16, 'H','I','K','V', 'I','S','I','O','N', '\0'};
USHORT Format2[40] = {24, 50, _OSD_YEAR4, '-',_OSD_MONTH2,'-',_OSD_DAY,'-', _OSD_HOUR24, ':', _OSD_MINUTE,':', _OSD_SECOND, '\0'};
for(i = 0; i < GetTotalDSPs(); i++){
SetOsdDisplayMode(ChannelHandle[i], 255, TRUE, 0, Format1, Format2);
SetOsd(ChannelHandle[i], TRUE);
}
Format1:靜態文字「HIKVISION」,座標 (48, 16)Format2:動態時間格式「YYYY-MM-DD-HH:MM:SS」,座標 (24, 50)255:顯示模式參數// OSD 特殊字元基底碼
private const ushort _OSD_BASE = 0x9000;
private const ushort _OSD_YEAR4 = _OSD_BASE + 0;
private const ushort _OSD_YEAR2 = _OSD_BASE + 1;
private const ushort _OSD_MONTH3 = _OSD_BASE + 2;
private const ushort _OSD_MONTH2 = _OSD_BASE + 3;
private const ushort _OSD_DAY = _OSD_BASE + 4;
private const ushort _OSD_WEEK3 = _OSD_BASE + 5;
private const ushort _OSD_CWEEK1 = _OSD_BASE + 6;
private const ushort _OSD_HOUR24 = _OSD_BASE + 7;
private const ushort _OSD_HOUR12 = _OSD_BASE + 8;
private const ushort _OSD_MINUTE = _OSD_BASE + 9;
private const ushort _OSD_SECOND = _OSD_BASE + 10;
///
/// 設定 OSD 字幕疊加
///
/// 通道控制碼陣列
/// true=開啟, false=關閉
public void SetOsd(IntPtr[] ChannelHandle, bool setValue)
{
if (setValue)
{
// 格式一:公司名稱
ushort[] Format1 = new ushort[]{ 48, 16, 'H', 'I', 'K', 'V', 'I', 'S', 'I', 'O', 'N', '\0' };
// 格式二:日期時間 YYYY-MM-DD HH:MM:SS
ushort[] Format2 = new ushort[]{
24, 50,
_OSD_YEAR4, '-', _OSD_MONTH2, '-', _OSD_DAY, '-',
_OSD_HOUR24, ':', _OSD_MINUTE, ':', _OSD_SECOND, '\0'
};
for (int i = 0; i < ChannelHandle.Length; i++)
{
HikVisionSDK.SetOsdDisplayMode(ChannelHandle[i], 255, true, 0, Format1, Format2);
HikVisionSDK.SetOsd(ChannelHandle[i], true);
}
}
else
{
for (int i = 0; i < ChannelHandle.Length; i++)
{
HikVisionSDK.SetOsd(ChannelHandle[i], false);
}
}
}
SetOsdDisplayMode 參數為 ushort[],嘗試填入中文機內碼 (如 0xB1A3) 理論可行,但實測官方 SDK 尚未完整支援中文顯示,仍在研究中_OSD_* 常數定義ushort 為 X、Y 座標,原點通常在影像左上角,單位為像素