1. 程式人生 > >音訊的錄製與播放元件SYAudio

音訊的錄製與播放元件SYAudio

  • 音訊的錄製

    • 錄製後會進行壓縮更小的檔案,並以mp3格式輸出
    • 錄製過程中,可以監測音量的變化
    • 可以設定錄音時間長
  • 音訊的播放

    • 本地的檔案播放
    • 網路檔案播放
    • 播放狀態監測
    • 播放時間監測
      • 檔案播放總時間
      • 當前播放進度時間

效果圖
效果圖

使用注意:

  • 新增AVFoundation.framework、AudioToolbox.framework
  • 音訊處理包括:開始錄音、停止錄音、播放音訊、停止音訊播放
  • 音訊處理是通過按鈕進行互動,通常採用三種狀態互動方式
    • UIControlEventTouchDown狀態時,開始錄音
    • UIControlEventTouchUpInside狀態時,停止錄音,並進行類似音訊檔案儲存的操作
    • UIControlEventTouchDragExit狀態時,與UIControlEventTouchUpInside狀態進行相同的操作
  • 播放網路音訊檔案時,http協議的適配
    • 在plist檔案設定屬性:App Transport Security Settings-Allow Arbitrary Loads-YES
  • 設定Enable Bitcode屬性為NO

使用介紹

  • 自動匯入:使用命令pod 'SYAudio'匯入到專案中
  • 手動匯入:或下載原始碼後,將原始碼新增到專案中

使用示例

匯入標頭檔案

#import "SYAudio.h"

音量圖示顯示YES,或不顯示NO

// 顯示
[SYAudio shareAudio].audioRecorder.monitorVoice = YES;

// 不顯示
[SYAudio shareAudio].audioRecorder.monitorVoice = NO;

音訊處理方法-開始錄音

NSString *filePath = xxxxx;
[[SYAudio shareAudio].audioRecorder recorderStart:filePath complete:^(BOOL isFailed) {

}];

音訊處理方法-停止錄音

[[SYAudio shareAudio].audioRecorder
recorderStop];

音訊處理方法-播放音訊(本地音訊檔案,或網路音訊檔案均可播放)

NSString *filePath = xxxxx;
[[SYAudio shareAudio].audioPlayer playerStart:filePath complete:^(BOOL isFailed) {

}];

音訊處理方法-停止音訊播放

[[SYAudio shareAudio].audioPlayer playerPause];

代理、協議SYAudioDelegate,及實現協議方法

[SYAudio shareAudio].audioPlayer.delegate = self;

實現協議方法

錄音

/// 開始錄音
- (void)recordBegined
{

}

/// 停止錄音
- (void)recordFinshed
{

}

/// 正在錄音中,錄音音量監測
- (void)recordingUpdateVoice:(double)lowPassResults
{

}

/// 正中錄音中,是否錄音倒計時、錄音剩餘時長
- (void)recordingWithResidualTime:(NSTimeInterval)time timer:(BOOL)isTimer
{

}

壓縮

/// 開始壓縮錄音
- (void)recordBeginConvert
{

}

/// 結束壓縮錄音
- (void)recordFinshConvert:(NSString *)filePath
{

}

播放

/// 開始播放音訊
- (void)audioPlayBegined:(AVPlayerItemStatus)state
{

}

/// 正在播放音訊(總時長,當前時長)
- (void)audioPlaying:(NSTimeInterval)totalTime time:(NSTimeInterval)currentTime
{

}

/// 結束播放音訊
- (void)audioPlayFinished
{

}