iOS 雙聲道效果實現方式

2021-09-01 17:56:21 字數 1837 閱讀 3363

雙聲道效果實現的主流程為:

下文將分別講述各個步驟。

1、 輸入雙聲道資料

主播端輸入的資料需要確保為雙聲道資料,有以下幾種方式可以實現:

1.1 業務方通過外部採集介面,輸入雙聲道 pcm 資料給 sdk 編碼後再傳送,流程如下圖所示:

1.2 業務方通過外部採集介面,輸入雙聲道 aac 編碼後資料給 sdk 傳送,流程如下圖所示:

音訊外部採集和渲染使用詳見: 音訊外部採集與渲染,本文不再贅述。

2、設定推流編碼雙聲道

業務方呼叫該 api 設定編碼雙聲道。該 api 需要在初始化 sdk 後,推流前呼叫。

zegoliveroomapi-publisher.h

/** 設定推流音訊聲道數

@param count 聲道數,1 或 2,預設為 1(單聲道)

@discussion 必須在初始化 sdk,呼叫推流前設定。

@note setlatencymode 設定為 zegoapi_latency_mode_normal 或 zegoapi_latency_mode_normal2 才能設定雙聲道(這兩個模式下預設為單聲道),在移動端雙聲道通常需要配合音訊前處理才能體現效果; setlatencymode 設定為 zego_latency_mode_low3 強制為雙聲道,就算設定為單聲道也是無效的(這個音訊模式下只支援雙聲道)。

*/- (void)setaudiochannelcount:(int)count;

3、設定混流編碼雙聲道混流模式下,主播連麥後,連麥的流會經過混流伺服器。為了讓觀眾聽到雙聲道效果,需要設定混流伺服器編碼為雙聲道。該設定項是混流配置 zegocompletemixstreamconfig 中的 channels:

/** 混流配置 */

@inte***ce zegocompletemixstreamconfig : nsobject

/** outputisurl 為 yes,則此值為 url;否則為流名 */

@property (copy) nsstring *outputstream;

/** 輸出為流名,或 url */

@property bool outputisurl;

/** 輸出幀率 */

@property int outputfps;

/** 輸出位元速率 */

@property int outputbitrate;

/** 輸出解析度 */

@property cgsize outputresolution;

/** 音訊編碼 */

@property int outputaudioconfig;

/** 混流編碼聲道數 */

@property int channels;

/** 輸入流列表 */

@property (strong) nsmutablearray*inputstreamlist;

/** 使用者自定義資料 */

@property nsdata* userdata;

@end

iOS 雷達掃瞄效果 實現

1 rotationanimation.removedoncompletion no 23 rotationanimation.fillmode kcafillmodeforwards fillmode的作用就是決定當前物件過了非active時間段的行為.比如動畫開始之前,動畫結束之後。如果是乙個動...

iOS下拉列表效果實現

控制項的屬性以及介面 主按鈕 可以自定義樣式 可在.m檔案中修改預設的一些屬性 property nonatomic,strong uibutton mainbtn property nonatomic,assign id delegate 下拉列表中的選項標題以及選項高度的設定 一些其他具體樣式的...

iOS中UIView翻轉效果實現

新建乙個view based模板工程,在viewcontroller檔案中新增下面的 即可實現翻轉效果 void viewdidload super viewdidload 需要翻轉的檢視 uiview parentview uiview alloc initwithframe cgrectmake...