0

このコードを使用してビデオを再生しています。

player= [[ MPMoviePlayerViewController alloc] initWithContentURL:movieURL];
player.navigationController.navigationBar.hidden = YES;
player.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
player.moviePlayer.controlStyle = MPMovieControlStyleNone;
player.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
player.moviePlayer.fullscreen = NO;
[self presentModalViewController:player animated:NO];

ビデオの再生は完璧に機能しますが、問題は、再生を終了した後、コンソールでこの結果が得られることです。

[MPAVController] Autoplay: Likely to keep up or full buffer: 0
[MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.

そして、声を録音しようとしたが録音できなかった後。

誰かが私がこの問題を解決するのを手伝ってくれる?

4

5 に答える 5

1

同じ種類のタスクが私によって行われます...あなたは私のコードを参照することができます...私はそれが役立つことを願っています...

- (IBAction) startRecording:(id)sender
{

    NSLog(@"**************Recording start**************");    

    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

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

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

    [recordSetting setValue:[NSNumber numberWithInt: kAudioFormatAppleLossless] forKey:AVFormatIDKey];

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

    [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitRateKey];

    NSError *error;

    if (![[NSFileManager defaultManager] fileExistsAtPath:mediaPath])
    {
        [[NSFileManager defaultManager] createDirectoryAtPath:mediaPath withIntermediateDirectories:NO attributes:nil error:&error];
    }


    mediaPath = [[NSString stringWithFormat:@"%@/sound.caf", DOCUMENTS_FOLDER] retain];
    NSURL *url = [NSURL fileURLWithPath:mediaPath];
    NSLog(@"AUDIOPATH%@",mediaPath);
    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;
    audioRecorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];

    if(!audioRecorder){

        NSLog(@"audioRecorder : %@ %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
    [audioRecorder setDelegate:self];
    [audioRecorder prepareToRecord];

    audioRecorder.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];
        [cantRecordAlert release];
        return;
    }

    // start recording
    [audioRecorder record];
}
于 2013-01-03T11:11:21.457 に答える
0

これが役立つかどうかはわかりませんがMPMoviePlayerViewControllerpresentMoviePlayerViewControllerAnimatedpresentModalViewController:animated:を提示する必要があります。

[self presentMoviePlayerViewControllerAnimated:player];

手動で閉じる場合は、MPMoviePlayerViewControllerを使用する必要がありますdismissMoviePlayerViewControllerAnimated

これは、MPAVControllerログの問題を解決するのに役立つ可能性のあるスレッドです。のカスタマイズをたくさん行っているようです。MPMoviePlayerViewController moviePlayer正直なところ、のMPMoviePlayerController代わりにを使用することを検討するかもしれませんMPMoviePlayerViewController

音声録音の実行に使用しているコードを確認しないと、音声録音の問題がMPMoviePlayerViewControllerに関係しているのか、他の場所でエラーが発生しているのかを判断することはできません。コードをもっと投稿することをお勧めします。

于 2012-11-12T15:28:07.110 に答える
0

ビデオの再生後にオーディオを録音する必要があるため、この通知を使用して、ムービープレーヤーがビデオの再生を完了したことを確認する必要があります...このためには、このコードを使用する必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:)
        name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];

そのmoviePlaybackComplete:メソッドでは、オーディオを録音します。この目的には、AVAudioPlayerクラスを使用することをお勧めします。次に、このコードを記録に使用します。

AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];
于 2012-11-15T09:18:09.157 に答える
0

また、これらのメッセージは、メディアプレーヤーに誤ったURLを送信したことが原因である可能性があることもわかりました。時々それは本当に簡単です。

于 2012-12-11T10:48:40.607 に答える
-1

MPMoviePlayerControllerのuseApplicationAudioSessionプロパティを確認してください。iOS 3.1.xでは、映画プレーヤーは常に独自のシステム提供のオーディオセッションを取得していました。新しいバージョンのiOSでは、アプリケーションセッションを共有できるようになりました。これは、デフォルト値でもあります。ムービーの再生を開始する前に、そのプロパティをNOに切り替えてみてください。

于 2012-11-12T18:27:38.310 に答える