Iphone MPAVController>&燃气轮机;没有足够的缓冲来跟上

Iphone MPAVController>&燃气轮机;没有足够的缓冲来跟上,iphone,ios,xcode,ios6,audio-recording,Iphone,Ios,Xcode,Ios6,Audio Recording,我正在使用此代码播放视频 player= [[ MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; player.navigationController.navigationBar.hidden = YES; player.moviePlayer.scalingMode = MPMovieScalingModeAspectFit; player.moviePlayer.controlStyle = MPMovieCo

我正在使用此代码播放视频

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];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:)
        name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];
视频播放效果很好,但问题是,在完成播放后,我在控制台中得到了这个结果

[MPAVController] Autoplay: Likely to keep up or full buffer: 0
[MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
然后在我尝试录制声音但无法录制之后


有人能帮我解决这个问题吗。

我不确定这是否有帮助,但您应该使用而不是
presentModalViewController:animated:
来演示您的
MPMoviePlayerServiceController
,例如:

[self presentMoviePlayerViewControllerAnimated:player];
如果要手动关闭
MPMoviePlayServices控制器
,则应使用
DismissMoviePlayServices控制器激活

这可能有助于解决MPAVController日志的问题。看来你正在做大量的定制< <代码> MPMoviePlayerViewController <代码>代码> MeVielPoope<代码> -你可以诚实地考虑只使用<代码> MPMoviePlayerController <代码>而不是<代码> MPMoviePlayerViewController < /C>
如果看不到您用于执行语音录制的代码,就无法判断您的语音录制问题是源于与MPMoviePlayerServiceWController有关的原因,还是您在其他地方遇到了错误。我建议发布更多代码。

检查MPMoviePlayerController上的属性。在iOS 3.1.x中,电影播放器总是有自己的系统提供的音频会话。在较新版本的iOS中,它现在可以共享应用程序会话,这也是默认值。在开始播放电影之前,请尝试将该属性切换为“否”。

播放视频后需要录制音频,因此您必须使用此通知才能知道电影播放器已完成播放视频…为此,您需要使用此代码

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];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:)
        name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];
在那部电影中,播放完成:你有录制音频的方法。 为此,您最好使用AVAudioPlayer类。 现在用这段代码来记录

AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];

我还发现,这些消息可能是由于向媒体播放器发送错误的URL造成的。有时候真的很简单。

同样的任务是由我完成的。。。你可以参考我的代码。。。我希望它能帮助

- (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];
}

问题是否也出现在ios6或其他ios版本上???你能在两个ios中发布你正在形成电影的代码部分吗?我遇到了问题…即使我在iPas中录制,录制任务仍在执行,但没有声音..我有类似的问题,也许你能帮我一下?!我正在全屏播放视频,完全播放后,我正在录制…文档说此属性从iOS 6开始已被弃用,不鼓励使用。事实上,我已经解决了我的问题,但这是一个相当长的过程,因此我将检查您的代码并尽快更新您…感谢您的帮助