首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 視訊監控系列(十):伺服器端進階功能——驗證、畫質設定、字幕疊加、板卡序號(三)

     編輯:關於C語言

二、設定畫面擷取畫質 (Encoder Picture Format)

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

VC++ 邏輯:依編碼類型與通道索引決定套用對象

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 邏輯限制套用通道。

C# 簡化實作:全通道統一設定

/// 
/// 設定所有通道錄製畫面品質
/// 
/// 通道控制碼陣列
/// 編碼圖像解析度枚舉
public static void SetCurrentEncoderPictureFormat(IntPtr[] ChannelHandle, PictureFormat_t t)
{
    for (int i = 0; i < ChannelHandle.Length; i++)
    {
        HikVisionSDK.SetEncoderPictureFormat(ChannelHandle[i], t);
    }
}

現代硬體通常無此限制,直接全通道套用即可。若遇舊版板卡,可自行加入通道索引判斷邏輯。

PictureFormat_t 解析度枚舉對照表

枚舉值解析度品質等級適用場景
ENC_QCIF_FORMAT176×144低行動裝置預覽、低頻寬
ENC_CIF_FORMAT352×288中一般監控錄影
ENC_DCIF_FORMAT528×384中高細節需求較高場合
ENC_4CIF_FORMAT704×576高高清錄證、車牌辨識

特性說明

  • 即時生效:設定後畫面品質即時改變,無需重啟預覽
  • 頻寬影響:解析度越高,網路傳輸頻寬與儲存空間消耗成倍增長
  • 子碼流獨立:主碼流與子碼流 (CIF/QCIF) 可分別設定,適應不同預覽/錄影需求
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved