Я прочитал о AVaudioRecorder из яблочного документации http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html#//apple_ref/doc/uid/TP40009767-CH2-SW6prepareToRecord врезаться
и я нашел функцию, которая записывает звук. но мой код рушится на
[soundRecorder prepareToRecord];
i googled для этого так много. Но я не нашел решения. Я также нашел некоторые другие исходные коды. Но у них также есть одна и та же проблема (сбой на prepareToRecord
). кто-нибудь может помочь мне, пожалуйста ...
заяц мой IBAction
- (IBAction) recordOrStop: (id) sender {
if (recording) {
[soundRecorder stop];
recording = NO;
self.soundRecorder = nil;
[recordOrStopButton setTitle: @"Record" forState:
UIControlStateNormal];
[recordOrStopButton setTitle: @"Record" forState:
UIControlStateHighlighted];
[[AVAudioSession sharedInstance] setActive: NO error: nil];
} else {
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategoryRecord
error: nil];
NSDictionary *recordSettings =
[[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax],
AVEncoderAudioQualityKey,
nil];
AVAudioRecorder *newRecorder =
[[AVAudioRecorder alloc] initWithURL: soundFileURL
settings: recordSettings
error: nil];
self.soundRecorder = newRecorder;
soundRecorder.delegate = self;
[soundRecorder prepareToRecord];
[soundRecorder record];
[recordOrStopButton setTitle: @"Stop" forState: UIControlStateNormal];
[recordOrStopButton setTitle: @"Stop" forState: UIControlStateHighlighted];
recording = YES;
}
}
Мой .h файл
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
#import "MBProgressHUD.h"
@interface LyricsController : UIViewController<AVAudioSessionDelegate,AVAudioRecorderDelegate, MBProgressHUDDelegate>{
IBOutlet UITextView *LyricsView;
MBProgressHUD *HUD;
AVAudioRecorder * soundRecorder;
NSURL *soundFileURL;
BOOL recording;
BOOL playing;
__weak IBOutlet UIButton *recordOrStopButton;
}@property(strong,nonatomic)NSURL *soundFileURL;
@property(nonatomic,strong)AVAudioRecorder * soundRecorder;
My PrepareToRecord когда-нибудь работает, а когда-то нет. почему это случается –
[звукRecorder запись] - только одна линия после [звукRecorder подготовкаToRecord]. Возможно, буфер не готов. Сделайте новую кнопку с надписью «Готов к записи», прикрепленную к новой записи IBAction «Запись». Там помещается запись [soundRecorder] –
, но выполнение кода было выполнено только на [soundRecorder prepareToRecord] компилятором. Компилятор даже не запускает компиляцию [recordRecorder record]. Я поставил Sleep (2) между операторами [soundRecorder prepareToRecord] и [soundRecorder record], чтобы увеличить время буферизации, чтобы быть готовым, но снова такое же происшествие. –