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开始已被弃用,不鼓励使用。事实上,我已经解决了我的问题,但这是一个相当长的过程,因此我将检查您的代码并尽快更新您…感谢您的帮助