iOS之錄音

介紹

  • 錄音使用的也是AVFoundation框架
  • 相關(guān)類:AVAudioRecorder
  • 可以設(shè)置的一些屬性 :
    <1>AVNumberOfChannelsKey 通道數(shù)
    <2>AVSampleRateKey 采樣率 一般用44100
    <3>AVLinearPCMBitDepthKey 比特率 一般設(shè)16 32
    <4>AVEncoderAudioQualityKey 質(zhì)量
    <5>AVEncoderBitRateKey 比特采樣率 一般是128000

使用

  • 步驟(跟音樂播放的使用是類似的)
    • 初始化
    • 開始錄音
    • 停止錄音

代碼示例

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVAudioRecorderDelegate>
{

    AVAudioRecorder *audioRecorder;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
        

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(100, 100, 100, 100);
    button.backgroundColor = [UIColor colorWithRed:0.6223 green:0.4564 blue:0.9735 alpha:1.0];
    [button setTitle:@"Play" forState:UIControlStateNormal];
    [button setTitle:@"Pause" forState:UIControlStateSelected];
    [button addTarget:self action:@selector(recorder:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    
    [self startAudioRecorder];
}
-(void)recorder:(UIButton *)sender{
    
    sender.selected = !sender.selected;
   sender.selected != YES?[audioRecorder stop]:[audioRecorder record];
    
}
-(void)startAudioRecorder{
 
    /*
     URL:是本地的URL 是AVAudioRecorder 需要一個(gè)存儲(chǔ)的路徑
     */
    
    NSString *name =[NSString stringWithFormat:@"%d.aiff",(int)[NSDate date].timeIntervalSince1970];
NSString *path = [[ NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES) firstObject] stringByAppendingPathComponent:name];
    NSError *error;
    //初始化
    /**
     AVNumberOfChannelsKey:聲道數(shù) 通常為雙聲道 值2
     AVSampleRateKey:采樣率 單位是HZ 通常設(shè)置成44100 44.1k
     AVLinearPCMBitDepthKey:比特率  8 16 32
     AVEncoderAudioQualityKey:聲音質(zhì)量 需要的參數(shù)是一個(gè)枚舉 :
           AVAudioQualityMin    最小的質(zhì)量
           AVAudioQualityLow    比較低的質(zhì)量
           AVAudioQualityMedium 中間的質(zhì)量
           AVAudioQualityHigh   高的質(zhì)量
           AVAudioQualityMax    最好的質(zhì)量
     AVEncoderBitRateKey:音頻的編碼比特率 BPS傳輸速率 一般為128000bps
     */
    audioRecorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:path] settings:@{AVNumberOfChannelsKey:@2,AVSampleRateKey:@44100,AVLinearPCMBitDepthKey:@32,AVEncoderAudioQualityKey:@(AVAudioQualityMax),AVEncoderBitRateKey:@128000} error:&error];
    audioRecorder.delegate = self;
    [audioRecorder prepareToRecord];
    
    //這個(gè)是存儲(chǔ)錄音文件的路徑可以根據(jù)這個(gè)路徑查看是否錄音成功
    //復(fù)制這個(gè)路徑 點(diǎn)擊桌面 commend+shift+G可以找到存放錄音文件的文件夾
    NSLog(@"%@",path);

}
//獲取到錄音文件
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
    
    
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    //NSFileManager文件操作的一個(gè)類
    NSFileManager *manager = [NSFileManager defaultManager];
    //獲得當(dāng)前文件的所有子文件:subpathsAtPath:
    NSArray *pathList = [manager subpathsAtPath:path]
    ;
    
        //需要只獲得錄音文件
    NSMutableArray *audioPathList = [NSMutableArray array];
        //遍歷這個(gè)文件夾下面的子文件
    for (NSString *audioPath in pathList) {
        //通過對(duì)比文件的延展名(擴(kuò)展名告组、尾綴)來區(qū)分是不是錄音文件
        if ([audioPath.pathExtension isEqualToString:@"aiff"]) {
        //把篩選出來的文件放到數(shù)組中 -> 得到所有的音頻文件
            [audioPathList addObject:audioPath];
        }
    }
    NSLog(@"錄音結(jié)束");
    NSLog(@"%@",pathList);
    NSLog(@"%@",audioPathList);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末交掏,一起剝皮案震驚了整個(gè)濱河市宫静,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葵第,老刑警劉巖桩卵,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕磨,死亡現(xiàn)場(chǎng)離奇詭異演痒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妄讯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門孩锡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亥贸,你說我怎么就攤上這事躬窜。” “怎么了炕置?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵荣挨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我朴摊,道長(zhǎng)默垄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任甚纲,我火速辦了婚禮口锭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贩疙。我一直安慰自己讹弯,他們只是感情好况既,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布这溅。 她就那樣靜靜地躺著,像睡著了一般棒仍。 火紅的嫁衣襯著肌膚如雪悲靴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天莫其,我揣著相機(jī)與錄音癞尚,去河邊找鬼。 笑死乱陡,一個(gè)胖子當(dāng)著我的面吹牛浇揩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憨颠,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼胳徽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼积锅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起养盗,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤缚陷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后往核,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箫爷,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年聂儒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虎锚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡薄货,死狀恐怖翁都,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谅猾,我是刑警寧澤柄慰,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站税娜,受9級(jí)特大地震影響坐搔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敬矩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一概行、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弧岳,春花似錦凳忙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腹尖,卻和暖如春柳恐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背热幔。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工乐设, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绎巨。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓近尚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親场勤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子戈锻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容