IOS開發之音頻--錄音


前言:本篇介紹錄音。

 

關於錄音,這里提供更為詳細的講解網址:http://www.cnblogs.com/kenshincui/p/4186022.html#audioRecord  ,並且該博客有更完整的詳述和代碼實現哦。

 

內容大綱:

  1、錄音應用場景。

  2、錄音功能實現。

  3、概念補充。

  4、開發經驗。

 

正文:

 

1、錄音應用場景

  ① 語言聊天:在即時通訊APP中,例如即時通訊APP中,例如微信、QQ等等,都有語音發送功能。

  ②語音備忘錄:錄一段音頻,來記錄某件事情。

 

2、錄音功能實現

  ①導入AVFoundation框架

    一些多媒體的處理,基本都使用這個框架。

  ②使用AVAudioRecorder進行錄音

    <1>創建錄音文件存放路徑

    <2>設置錄音附件設置項(#import <AVFoundation/AVAudioSettings.h>)

      2-1、 NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];

      2-2、設置編碼格式:

         [recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey: AVFormatIDKey];

      2-3、采樣率:

         [recordSettings setValue :[NSNumber numberWithFloat:11025.0] forKey: AVSampleRateKey];

      2-4、通道數:

         [recordSettings setValue :[NSNumber numberWithInt:2] forKey: AVNumberOfChannelsKey];

      2-5、音頻質量,采樣質量:

         [recordSettings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];

    <3>根據路徑以及設置項,創建錄音對象

      _audioRecorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:nil];

    <4>准備錄音

      [self.audioRecorder prepareToRecord];

    <5>開始錄音

      [self.audioRecorder record];

    <6>暫停錄音

      [self.audioRecorder pause];

    <7>停止錄音

      [self.audioRecorder stop];

  ③代碼實現:

    <1>首先在storyboard上簡單實現三個按鈕監聽:

      

    <2>實現的代碼:

 1 #import "ViewController.h"
 2 #import <AVFoundation/AVFoundation.h>
 3 
 4 @interface ViewController ()
 5 
 6 /** 錄音對象*/
 7 @property(nonatomic ,strong) AVAudioRecorder *recorder;
 8 
 9 @end
10 
11 @implementation ViewController
12 
13 -(void)viewDidLoad{
14     [self createRecord];
15 }
16 
17 - (void)createRecord{
18     // 0.1 創建錄音文件存放路徑
19     NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"test.caf"];
20     NSLog(@"%@", path);
21     NSURL *url = [NSURL URLWithString:path];
22     
23     // 0.2 創建錄音設置
24     NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];
25     // 設置編碼格式
26     [recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey: AVFormatIDKey];
27     // 采樣率
28     [recordSettings setValue :[NSNumber numberWithFloat:11025.0] forKey: AVSampleRateKey];
29     // 通道數
30     [recordSettings setValue :[NSNumber numberWithInt:2] forKey: AVNumberOfChannelsKey];
31     //音頻質量,采樣質量
32     [recordSettings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];
33     
34     
35     // 1. 創建錄音對象
36     self.recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:nil];
37     
38     
39     // 2. 准備錄音(系統會分配一些錄音資源)
40     [self.recorder prepareToRecord];
41 }
42 
43 - (IBAction)beginRecord
44 {
45     NSLog(@"開始錄音");
46     [self.recorder record]; // 直接錄音, 需要手動停止
47 //    [self.recorder recordForDuration:3]; // 從當前執行這行代碼開始錄音, 錄音5秒
48 //    [recorder recordAtTime:recorder.deviceCurrentTime + 2]; // 2s, 需要手動停止
49 //    [self.recorder recordAtTime:self.recorder.deviceCurrentTime + 2 forDuration:3]; // 2s  3s
50 }
51 
52 - (IBAction)pauseRecord:(id)sender {
53     NSLog(@"暫停錄音");
54     [self.recorder pause];
55 }
56 
57 - (IBAction)stopRecord {
58     NSLog(@"停止錄音");
59     [self.recorder stop];
60 }
61 
62 @end

    在23~32行的代碼,這個是對一個屬性添加很多值,是可以抽離出來聲明一個屬性,然后加值的部分寫在懶加載中。

    <3>通知錄音之后,可以通過打印出來的路徑,然后找到對應的錄音文件,可以自己試聽測試一下。

 

3、概念補充

  ①編碼

    概念: 編碼是信息從一種形式轉換為另一種形式的過程。

    編碼格式:

      > PCM : 脈沖編碼調制,是一種非壓縮音頻數字化技術,是一種未壓縮的原音重現, 數字模式下, 音頻的初始信號是PCM

      > MP3

      > AAC: AAC其實是“高級音頻編碼(advanced audio coding)”的縮寫,它是被設計用來取代MP3格式的。

      > HE-AAC: HE-AAC是AAC的一個超集,這個“HE”代表的是“High efficiency”。 HE-AAC是專門為低比特率所優化的一種音頻編碼格式

      > AMR: AMR全稱是“Adaptive Multi-Rate”,它也是另一個專門為“說話(speech)”所優化的編碼格式,也是適合低比特率環境下采用

      > ALAC: 它全稱是“Apple Lossless”,這是一種沒有任何質量損失的音頻編碼方式,也就是我們說的無損壓縮

      > IMA4: 這是一個在16-bit音頻文件下按照4:1的壓縮比來進行壓縮的格式。

  ②文件格式(不同的文件格式,可保存不同的編碼格式編碼的文件)

      >WAV

        特點: 音質最好的格式, 對應PCM編碼。

        適用: 多媒體開發、保存音樂和音效素材。

      >MP3

        特點: 音質好,壓縮比比較高,被大量軟件和硬件支持。

        適用: 適合用於比較高要求的音樂欣賞。

      >caf

        特點: 適用於幾乎iOS中所有的編碼格式。

  ③參考資料地址:

    http://baike.baidu.com/link?url=z36Nw7UihAEnCC6BjCygft9rBpLr29Ru0of_9Blpl0aR6qzI1B9iWTD5h3uimPVix2SuuQYo7GVYOIsaaP2Eyq

 

4、開發經驗

  caf 文件格式, 因為某些編碼設置, 文件有可能會很大, 而且caf, 格式並不是很通用, 所以在開發過程中, 一般會進行壓縮轉碼, MP3。

  相關學習資料:http://blog.csdn.net/ysy441088327/article/details/7392842

 

轉載注明出處:http://www.cnblogs.com/goodboy-heyang/p/5374322.html ,尊重勞動成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM