對應 VC++ 範例 OnSettings() 中的解析度下拉選單設定:

switch(dlg.m_IEncodeType)
{
case 0: encodeType = ENC_4CIF_FORMAT; break;
case 1: encodeType = ENC_2CIF_FORMAT; break;
case 2: encodeType = ENC_DCIF_FORMAT; break;
case 3: encodeType = ENC_CIF_FORMAT; break;
case 4: encodeType = ENC_QCIF_FORMAT; break;
default: encodeType = ENC_CIF_FORMAT; break;
}
for(i = 0; i < GetTotalDSPs(); i++)
{
if(encodeType != ENC_4CIF_FORMAT)
{
// 非 4CIF 直接套用
SetEncoderPictureFormat(ChannelHandle[i], encodeType);
}
else if ((i % 4 == 0) || (i % 4 == 1))
{
// 4CIF 僅套用至通道 0,1,4,5,8,9... (每組 4 路中前 2 路)
SetEncoderPictureFormat(ChannelHandle[i], encodeType);
}
}
硬體限制說明:早期 DSP 晶片資源有限,4CIF (704×576) 解析度較高,每顆 DSP 僅能支援 2 路 4CIF 編碼,故 VC++ 範例以 i % 4 邏輯限制套用通道。
///
/// 設定所有通道錄製畫面品質
///
/// 通道控制碼陣列
/// 編碼圖像解析度枚舉
public static void SetCurrentEncoderPictureFormat(IntPtr[] ChannelHandle, PictureFormat_t t)
{
for (int i = 0; i < ChannelHandle.Length; i++)
{
HikVisionSDK.SetEncoderPictureFormat(ChannelHandle[i], t);
}
}
現代硬體通常無此限制,直接全通道套用即可。若遇舊版板卡,可自行加入通道索引判斷邏輯。
| 枚舉值 | 解析度 | 品質等級 | 適用場景 |
|---|---|---|---|
ENC_QCIF_FORMAT | 176×144 | 低 | 行動裝置預覽、低頻寬 |
ENC_CIF_FORMAT | 352×288 | 中 | 一般監控錄影 |
ENC_DCIF_FORMAT | 528×384 | 中高 | 細節需求較高場合 |
ENC_4CIF_FORMAT | 704×576 | 高 | 高清錄證、車牌辨識 |