我查找了帖子標題的搜索條件,但唉..錄製音頻剪輯時設置時間限制?
我正在使用AVFoundation構建iPhone應用程序。
是否有正確的程序來限制將被錄製的音頻數量?我想最多10秒。
感謝您的幫助/諮詢/提示/指針..
我查找了帖子標題的搜索條件,但唉..錄製音頻剪輯時設置時間限制?
我正在使用AVFoundation構建iPhone應用程序。
是否有正確的程序來限制將被錄製的音頻數量?我想最多10秒。
感謝您的幫助/諮詢/提示/指針..
AVAudioRecorder有以下方法:
- (BOOL)recordForDuration:(NSTimeInterval)duration
我認爲,將這樣的伎倆!
我通常不與AVFoundation
工作,所以我不知道確切的方法/類名(我填在我自己的),但一解決此問題的方法是在錄製最初開始時開始重複使用NSTimer
。事情是這樣的:
@interface blahblah
...
int rec_time;
NSTimer *timer;
Recorder *recorder;
...
@end
@implementation blahblah
...
-(void)beginRecording {
[recorder startRecording];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(recordingTime)
userInfo:nil
repeats:YES];
}
-(int)recordingTime {
if (rec_time >= 10) {
[recorder endRecording];
[timer invalidate];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You recorded for too long!"...;
return;
}
rec_time = rec_time + 1;
}
...
@end
謝謝你。我會等待和看到其他答覆,但我真的很感謝你的時間和精力。 – 2011-04-17 23:16:02
順便說一句,你爲什麼不與AVFoundation合作?有沒有更好的方法?再次感謝.. – 2011-04-17 23:17:14
不,這只是我通常不使用音頻。 – esqew 2011-04-19 00:20:51
這是從iOS編程食譜一個例子,我發現它是非常有用的和straigtforward。開始記錄後,您會以10秒的延遲時間調用停止功能,停止記錄時它會自動調用代理方法audioRecorderDidFinishRecording:successfully
。
@implementation ViewController{
AVAudioRecorder *recorder;
AVAudioPlayer *player;
}
- (IBAction)recordPauseTapped:(id)sender {
// Stop the audio player before recording
if (player.playing) {
[player stop];
}
if (!recorder.recording) {
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
// Start recording
[recorder record];
[recordPauseButton setBackgroundImage:recordingImage forState:UIControlStateNormal];
[self performSelector:@selector(stopRecording)
withObject:self afterDelay:10.0f];
} else {
[recorder stop];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:NO error:nil];
}
}
- (void)stopRecording {
[recorder stop];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:NO error:nil];
}
- (void) audioRecorderDidFinishRecording:(AVAudioRecorder *)avrecorder successfully:(BOOL)flag{
NSLog(@"after 10 sec");
}
完美..謝謝。 – 2011-04-18 08:28:59
@DavidDelMonte是否爲你工作? – Monicka 2015-07-13 06:51:50
那麼,它在4年前被回答和接受。我想它是有效的。我不知道現在是否一樣。爲什麼? – 2015-07-13 06:54:09