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

C# 視訊監控系列(十二):H.264 播放器——播放錄影檔案(二)

     編輯:關於C語言

VC++ 官方播放器 CPlayerDlg 核心流程分析

  1. OnInitDialog:初始化音量、判斷開啟模式 (檔案/串流)、註冊結束/編碼變更訊息
  2. OpenFile / SetOpenState:開啟檔案、取得畫面尺寸、設定疊加模式、顯示統計資訊 (總幀數、總時長)
  3. Play:啟動播放與聲音
  4. 本篇不討論直接從記憶體串流播放模式

C# 非完全對應實作 (WinForms)

欄位與初始化

// 播放埠號:0~15 可用
private int PORT = 0;
// 目前播放檔案路徑
private string m_strPlayFileName;

private void Form3_Load(object sender, EventArgs e)
{
    // 設定最大音量
    HikPlayer.Hik_PlayM4_SetVolume(PORT, 0xFFFF);
    
    // 註冊檔案播放結束訊息
    HikPlayer.Hik_PlayM4_SetFileEndMsg(PORT, pVideo.Handle, HikPlayer.WM_FILE_END);
    
    // 註冊編碼參數變更訊息
    HikPlayer.Hik_PlayM4_SetEncChangeMsg(PORT, pVideo.Handle, HikPlayer.WM_ENC_CHANGE);
}

開啟檔案並播放

private void btnPlay_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        m_strPlayFileName = openFileDialog1.FileName;
        if (!string.IsNullOrEmpty(m_strPlayFileName))
        {
            OpenFile();
            // 設定畫質優化
            HikPlayer.Hik_PlayM4_SetPicQuality(PORT, true);
        }
        else
            MessageBox.Show("請選擇檔案!!");
    }
}

private void OpenFile()
{
    // 開啟播放檔案
    HikPlayer.Hik_PlayM4_OpenFile(PORT, m_strPlayFileName);
    Play();
}

public void SetOpenState()
{
    int m_nWidth, m_nHeight;
    // 取得原始影像尺寸,可據此自動調整播放器大小
    HikPlayer.Hik_PlayM4_GetPictureSize(PORT, out m_nWidth, out m_nHeight);
    
    // 設定覆蓋模式:洋紅色 (255,0,255) 作為透明色鍵
    HikPlayer.Hik_PlayM4_SetOverlayMode(PORT, true, Color.FromArgb(255, 0, 255).ToArgb());
}

private void Play()
{
    // 開始播放影像
    HikPlayer.Hik_PlayM4_Play(PORT, pVideo.Handle);
    // 播放聲音
    HikPlayer.Hik_PlayM4_PlaySound(PORT);
}

關鍵技術點說明

  1. 相對 VC++ 簡化:省略空委托、統計資訊顯示、多種開啟模式判斷等邏輯
  2. 檔案開啟失敗排查:若 OpenFile 失敗,通常是錄影檔本身有問題。請先用官方附贈播放器拖曳測試該 .264 檔
  3. 建議補充:try-catch 錯誤處理、播放狀態旗標管理、UI 執行緒安全呼叫
  4. 視窗控制代碼:pVideo.Handle 為 PictureBox 或 Panel 的 Handle 屬性,作為繪圖目標視窗

常見錯誤碼對照

錯誤碼含義處理建議
1檔案不存在/路徑錯誤檢查路徑、權限
2檔案格式不支援確認為標準 .264,嘗試官方播放器驗證
3埠號已被佔用換 PORT (0~15) 或先 Stop/CloseFile
4解碼器初始化失敗檢查系統編碼器、重裝 SDK
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved