1

私はMPMediaPickerController.Afterを使ってiPod Music Libraryから音楽を再生しなければならないアプリケーションを作っています。私はいくつかの外部音声で曲を録音したいと思います(例えば、 - User's Voice)。同じことだが問題が発生するのは、まずアプリケーションが起動する。私はiPod Musicライブラリから曲を選ぶ。録音ボタンをクリックする。録音開始ボタンをクリックすると、前に再生した曲が停止するが、録音は正常に機能する。録音録音にAVAudioRecorderを使用しています。これは私の使用しているコードです。MPMediaPickerControllerを使用してiPodライブラリから曲を再生するにはどうすればよいですか?

-(Void)ViewDidLoad 
{ 
self.musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 
} 
- (void)playOrPauseMusic:(id)sender { 
MPMusicPlaybackState playbackState = self.musicPlayer.playbackState; 
if (playbackState == MPMusicPlaybackStateStopped || playbackState == MPMusicPlaybackStatePaused) { 
    [self.musicPlayer play]; 
} else if (playbackState == MPMusicPlaybackStatePlaying) { 
    [self.musicPlayer pause]; 
} 
} 

- (void)openMediaPicker:(id)sender { 
MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic]; 
mediaPicker.delegate = self; 
mediaPicker.allowsPickingMultipleItems = NO; // this is the default 
[mediaPicker shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight]; 
[self presentModalViewController:mediaPicker animated:YES]; 
} 

- (void) startRecording 
{ 
[self.musicPlayer play]; 
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
NSError *err = nil; 
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 
[audioSession setActive:YES error:&err]; 
err = nil; 
if(err){ 
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    return; 
} 

recordSetting = [[NSMutableDictionary alloc] init]; 

// We can use kAudioFormatAppleIMA4 (4:1 compression) or kAudioFormatLinearPCM for nocompression 
[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey]; 

// We can use 44100, 32000, 24000, 16000 or 12000 depending on sound quality 
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 

// We can use 2(if using additional h/w) or 1 (iPhone only has one microphone) 
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; 

[recordSetting setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey]; 
[recordSetting setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
[recordSetting setObject:[NSNumber numberWithInt: AVAudioQualityMax] forKey: AVEncoderAudioQualityKey]; 

recorderFilePath = [NSString stringWithFormat:@"%@/MySound.caf", DOCUMENTS_FOLDER] ; 

NSLog(@"recorderFilePath: %@",recorderFilePath); 

NSURL *url = [NSURL fileURLWithPath:recorderFilePath]; 

err = nil; 

NSData *audioData = [NSData dataWithContentsOfFile:[url path] options: 0 error:&err]; 
if(audioData) 
{ 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    [fm removeItemAtPath:[url path] error:&err]; 
} 

err = nil; 
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err]; 
if(!recorder){ 
    NSLog(@"recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]); 
    UIAlertView *alert = 
    [[UIAlertView alloc] initWithTitle: @"Warning" 
           message: [err localizedDescription] 
           delegate: nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [alert show]; 

    return; 
} 

//prepare to record 
[recorder setDelegate:self]; 
[recorder prepareToRecord]; 
recorder.meteringEnabled = YES; 

BOOL audioHWAvailable = audioSession.inputIsAvailable; 
if (! audioHWAvailable) { 
    UIAlertView *cantRecordAlert = 
    [[UIAlertView alloc] initWithTitle: @"Warning" 
           message: @"Audio input hardware not available" 
           delegate: nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [cantRecordAlert show]; 

    return; 
} 

// start recording 
[recorder recordForDuration:(NSTimeInterval) 2]; 

lblStatusMsg.text = @"Recording..."; 
selector:@selector(handleTimer) userInfo:nil repeats:YES]; 
} 

これは、事前にMPMusicPlayerとAVAudioRecorder.Please help.Thanksの私のコードです。

答えて

1

iPodライブラリからインポートした曲を録音することはできません.Media3emをmp3形式に変換する必要があるため、mp3ファイルのみを録音できます。

あなたはそれをhereから得ることができます、これがあなたを助けてくれることを願っています。

0

おそらく2つのトラックを同時に再生するように見えます。別の声をトラックに録音し、これとあなたのmp3が同時に再生を開始するようにすることができます。明らかに、これはあなたのアプリ内でのみ動作します。

関連する問題