オーディオクリップの録音時に時間制限を設定しますか?

avaudiorecorder core-audio ios4 xcode
オーディオクリップの録音時に時間制限を設定しますか?

投稿タイトルの行に沿って検索キーワードを探しましたが、残念ながら..

AVFoundationを使用してiPhoneアプリを構築しています。

録音されるオーディオの量を制限する正しい手順はありますか? 最大10秒欲しいです。

ヘルプ/アドバイス/ヒント/ポインターをありがとう。

  5  1


ベストアンサー

AVAudioRecorderには次のメソッドがあります。

- (BOOL)recordForDuration:(NSTimeInterval)duration

これでうまくいくと思います!

http://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioRecorder_ClassReference/Reference/Reference.html//apple_ref/doc/uid/TP40008238

14


私は通常、 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

4


これはiOSプログラミングクックブックの例で、非常に便利でわかりやすいものです。 録音を開始した後、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");
}

1


タイトルとURLをコピーしました