簡體   English   中英

如何將錄制的音頻保存到我的應用程序?

[英]How To save Recorded audio to my app?

請幫我,我很累在stackOverflow中使用以下答案獲得答案

Ans 1

Ans 2

我的代碼是

- (IBAction)RecordBtnClicked:(UIButton *)sender {
if (sender.isSelected) {
    if (!recorder.recording) {
 [session setActive:YES error:nil];
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        temporaryRecFile = [prefs URLForKey:@"Test1"];
        player = [[AVAudioPlayer alloc]initWithContentsOfURL:temporaryRecFile error:nil];
        player.delegate = self;
        player.volume = 1;
        [player prepareToPlay];
        [player play];
        [sender setSelected:false];
    }
    `[recordBtn setImage:[UIImage imageNamed:@"a_recordp.png"] forState:UIControlStateSelected];
    [recorder stop];
}`else{
    if (player.playing) {
        [player stop];
    }`
    if (!recorder.recording) {
        [recordBtn setImage:[UIImage imageNamed:@"a_records.png"] forState:UIControlStateSelected];
        NSString *documentPath = [pathComponent objectAtIndex:0];
        NSString *pathTosave =[documentPath stringByAppendingPathComponent:[self fileNameForRecording]];
        NSURL *url = [NSURL fileURLWithPath:pathTosave];
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        [prefs setURL:url forKey:@"test1"];
        session = [AVAudioSession sharedInstance];
        [session setActive:YES error:Nil];
       // temporaryRecFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByDeletingLastPathComponent]];
        [recorder record];
        recordTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimeInterval) userInfo:nil repeats:YES];
    }
    [sender setSelected:true];
    [discardBtn setHidden:false];
    [saveBtn setHidden:false];
}

}

我有一個按鈕在第一次點擊開始錄制,在第二次點擊停止錄制相同的按鈕,再一次點擊同一按鈕錄制第三次,我想播放相同的聲音,但沒有得到想要的文件。

 temporaryRecFile = [prefs URLForKey:@"Test1"];

它給出零值? 如果我以錯誤的方式編寫代碼,請為此提供一些建議? 任何答案將不勝感激預先感謝

有時您不能依靠iOS保存數據,您需要通過同步來強制它這樣做。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setURL:url forKey:@"test1"];
[prefs synchronize]; //this will ensure it is written to the disk

我還能給您的一個建議是拆分按鈕功能,您在此IBAction中做的太多了(錄制,停止錄制和播放)。 最好有兩個按鈕,第一個是recordOrStop()playOrStop()但這只是我的觀點,因為這樣可以避免出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM