API目錄
音視頻處理模塊介紹
音視頻處理接口是TUTK P2P SDK針對(duì)iOS平臺(tái)提供的核心功能接口集,主要用于視頻解碼方式設(shè)置、解碼延遲調(diào)整、音頻監(jiān)聽/對(duì)講控制、視頻丟幀策略配置、本地錄像及畫面截圖等關(guān)鍵場(chǎng)景,為APP實(shí)現(xiàn)音視頻實(shí)時(shí)交互提供標(biāo)準(zhǔn)化調(diào)用方式。
KY_SetHWDecode
功能描述:為指定的視頻通道設(shè)置解碼方式(硬件解碼或軟件解碼)。
接口定義
- (void)KY_SetHWDecode:(NSInteger)channel
isHWDeocde:(BOOL)isHWDeocde;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| channel | NSInteger | 要設(shè)置的視頻通道號(hào),通常為 0。 |
| isHWDecode | BOOL | YES 表示啟用硬件解碼,NO 表示啟用軟件解碼。 |
回調(diào)說明
暫無額外回調(diào),該接口為同步執(zhí)行接口
返回碼
該接口無返回值,執(zhí)行失敗通常表現(xiàn)為解碼方式未生效,需檢查通道號(hào)有效性
代碼示例
// 為 _mainChannel 指定的通道設(shè)置為軟件解碼
[self.camera KY_SetHWDecode:_mainChannel isHWDeocde:NO];
KY_SetDecodeDelayTime
功能描述:設(shè)置視頻解碼的最大延遲時(shí)間和每幀的解碼時(shí)間間隔,用于平衡流暢度和實(shí)時(shí)性。
接口定義
- (void)TK_setDecodeDelayTime:(NSInteger)delayTime
durationTime:(NSInteger)durationTime
channel:(NSInteger)channel;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| delayTime | NSInteger | 最大延遲時(shí)間,單位為毫秒 (ms)。 |
| durationTime | NSInteger | 解碼時(shí)間間隔,單位為毫秒 (ms),取值范圍為 0 ~ 30。 |
| channel | NSInteger | 要設(shè)置的視頻通道號(hào),通常為 0。 |
回調(diào)說明
暫無額外回調(diào),該接口為同步執(zhí)行接口
返回碼
該接口無返回值,參數(shù)超出范圍會(huì)導(dǎo)致設(shè)置不生效,建議設(shè)置前校驗(yàn)參數(shù)合法性
代碼示例
// 設(shè)置最大延遲為 1500ms,解碼間隔為 15ms
[self.camera TK_setDecodeDelayTime:1500 durationTime:15 channel:0];
KY_StartListen
功能描述:開啟或關(guān)閉音頻監(jiān)聽功能(即播放來自設(shè)備端的聲音)。
接口定義
- (void)KY_StartListen:(NSInteger)channel
isOn:(BOOL)isOn
isPlayer:(BOOL)isPlayer;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| channel | NSInteger | 要操作的音頻通道號(hào),通常為 0。 |
| isOn | BOOL | YES 表示開啟監(jiān)聽,NO 表示關(guān)閉監(jiān)聽。 |
| isPlayer | BOOL | 是否解碼并播放音頻,默認(rèn)為 true。 |
回調(diào)說明
暫無額外回調(diào),監(jiān)聽狀態(tài)變更可通過音頻播放狀態(tài)自行判斷
返回碼
該接口無返回值,操作失敗會(huì)導(dǎo)致音頻監(jiān)聽功能未按預(yù)期開啟/關(guān)閉
代碼示例
// 開啟監(jiān)聽功能
[self.camera KY_StartListen:_mainChannel isOn:YES isPlayer:YES];
KY_StartTalk
功能描述:開啟或關(guān)閉音頻對(duì)講功能(即向設(shè)備端發(fā)送聲音)。
接口定義
- (void)KY_StartTalk:(NSInteger)channel
isResend:(BOOL)isResend
isOn:(BOOL)isOn;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| channel | NSInteger | 要操作的音頻通道號(hào),通常為 0。 |
| isResend | BOOL | YES 表示啟用重傳機(jī)制,以提高弱網(wǎng)環(huán)境下的通話質(zhì)量。 |
| isOn | BOOL | YES 表示開啟對(duì)講,NO 表示關(guān)閉對(duì)講。 |
回調(diào)說明
暫無額外回調(diào),對(duì)講狀態(tài)可通過麥克風(fēng)權(quán)限及網(wǎng)絡(luò)狀態(tài)綜合判斷
返回碼
該接口無返回值,弱網(wǎng)環(huán)境下啟用重傳機(jī)制可降低對(duì)講失敗概率
代碼示例
// 開啟對(duì)講功能,并啟用重傳機(jī)制
[self.camera KY_StartTalk:self.mainChannel isResend:YES isOn:YES];
KY_setVideoDropModeWithChannel
功能描述:設(shè)置當(dāng)視頻解碼緩存達(dá)到最大值時(shí)的丟幀策略,用于在網(wǎng)絡(luò)不佳時(shí)維持流暢度。
接口定義
- (void)KY_setVideoDropModeWithChannel:(NSInteger)channel
mode:(DropMode)mode;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| channel | NSInteger | 要設(shè)置的視頻通道號(hào),通常為 0。 |
| mode | DropMode | 丟幀模式枚舉:
|
回調(diào)說明
暫無額外回調(diào),丟幀策略生效可通過視頻流暢度直觀判斷
返回碼
該接口無返回值,傳入非標(biāo)準(zhǔn)mode值會(huì)使用默認(rèn)丟幀策略(mode=0)
代碼示例
// 設(shè)置當(dāng)延遲過高時(shí),丟棄 P 幀
[self.camera KY_setVideoDropModeWithChannel:0 mode:0];
KY_StartRecording
功能描述:開啟或關(guān)閉本地錄像功能,將視頻流(可選音頻)保存為文件。
接口定義
- (void)KY_StartRecording:(NSInteger)channel
fileName:(NSString * _Nullable)fileName
durationTime:(NSTimeInterval)durationTime
isOn:(BOOL)isOn
isRecordAudio:(BOOL)isRecordAudio
success:(void (^ _Nonnull)(void))success
failure:(void (^ _Nonnull)(NSError * _Nonnull))failure;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| channel | NSInteger | 要錄制的視頻通道號(hào),通常為 0。 |
| fileName | NSString * | 保存到沙盒的文件名稱。如果為 nil 或空字符串,SDK 可能會(huì)自動(dòng)生成文件名。 |
| durationTime | NSTimeInterval | 錄像持續(xù)時(shí)間,單位為秒。默認(rèn)值為 3 分鐘。如果設(shè)置為 0,則表示持續(xù)錄制直到手動(dòng)停止。 |
| isOn | BOOL | YES 表示開始錄制,NO 表示停止錄制。 |
| isRecordAudio | BOOL | YES 表示同時(shí)錄制音頻,NO 表示只錄制視頻。 |
| success | block | 操作成功時(shí)的回調(diào)。 |
| failure | block | 操作失敗時(shí)的回調(diào),包含一個(gè) NSError 對(duì)象。 |
回調(diào)說明
操作結(jié)果通過success/failure block返回,failure block包含
NSError對(duì)象,可解析錯(cuò)誤原因返回碼
失敗信息可通過
NSError.code 查看,常見錯(cuò)誤碼對(duì)應(yīng)存儲(chǔ)權(quán)限不足、通道號(hào)無效、文件名稱非法等代碼示例
// 開始錄制,錄制音頻,使用默認(rèn)文件名和時(shí)長
[self.camera KY_StartRecording:_mainChannel
fileName:@""
durationTime:0
isOn:YES
isRecordAudio:YES
success:^{
NSLog(@"錄像已成功開始。");
}
failure:^(NSError * _Nonnull error) {
NSLog(@"錄像開始失敗: %@", error.localizedDescription);
}];
// ... 一段時(shí)間后 ...
// 停止錄制
[self.camera KY_StartRecording:_mainChannel
fileName:@""
durationTime:0
isOn:NO
isRecordAudio:YES
success:^{
NSLog(@"錄像已成功停止。");
}
failure:^(NSError * _Nonnull error) {
NSLog(@"錄像停止失敗: %@", error.localizedDescription);
}];
KY_Snapshot
功能描述:截取當(dāng)前視頻畫面并保存為圖片文件。
接口定義
- (void)KY_Snapshot:(NSInteger)channel
fileName:(NSString * _Nullable)fileName;
參數(shù)說明
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| channel | NSInteger | 要截取畫面的視頻通道號(hào),通常為 0。 |
| fileName | NSString * | 保存到沙盒的圖片文件名稱(不含路徑)。如果為 nil 或空字符串,SDK 可能會(huì)自動(dòng)生成文件名。 |
回調(diào)說明
暫無額外回調(diào),截圖結(jié)果可通過沙盒文件是否生成判斷
返回碼
該接口無返回值,截圖失敗通常因通道無視頻流、存儲(chǔ)權(quán)限不足或文件名稱非法導(dǎo)致
代碼示例
// 截取當(dāng)前畫面,使用默認(rèn)文件名
[self.camera KY_Snapshot:0 fileName:@""];
