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

Delphi 多媒體播放音軌與聲道切換技術總結:IAMStreamSelect 與 IBasicAudio 實戰

     編輯:Delphi

概念釐清

音軌切換:IAMStreamSelect 介面

推薦使用 Morgan Stream Switcher Filter。取得 Filter 上的 IAMStreamSelect,呼叫 Enable:

var
  obj: IAMStreamSelect;
begin
  if Filter.QueryInterface(IID_IAMStreamSelect, obj) = S_OK then begin
    obj.Enable(Index, AMSTREAMSELECTENABLE_ENABLE); // Index 為音軌索引
    obj := nil;
  end;
end;

聲道切換:IBasicAudio 介面

取得 Audio Renderer Filter(神龍卡等硬解卡可能在 Hardware Decoder Filter 上)的 IBasicAudio,設定 put_Balance:

術語說明
音軌DVD/MPEG2 多語種/原唱伴唱獨立音訊流,單一檔案可含多軌
聲道立體聲左/右通道,VCD 時代透過切換左右聲道實現原唱/伴唱切換
數值效果
-10000右聲道
0立體聲
10000左聲道

獲取音軌數量的兩種情況

  1. Splitter 為每軌建立獨立 Audio Output Pin:統計 Pin 數即為音軌數。
  2. Splitter 僅輸出單一 Audio Pin 但實作 IAMStreamSelect:呼叫 Count 方法獲取軌數。

常見問題與對策

切換聲道後單喇叭發聲 → 推薦使用 TBalancer 音訊聲道均衡控件 進行精細控制,避免單純 Balance 導致能量損失。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved