所以我正在使用AVAudioRecorder在录制视频的AVCaptureSession旁边录制音频(我知道这很奇怪,但对于我的情况,我需要单独录制它们).
除了iPhone 5S之外,每台设备上的一切都运行良好.它记录没有错误,但保存到磁盘的文件已损坏或其他.当我在我的Mac上访问文件系统并尝试使用VLC或Quicktime播放m4a文件时,我得到"无法检测到文件的格式"错误.以下是我初始化AVAudioRecorder并录制音频的方法:
// Prepare the audio session
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoRecording error:nil];
// Setup audio recording
NSDictionary *recordSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey: @(AVAudioQualityLow),
AVEncoderBitRateKey: @16,
AVNumberOfChannelsKey: @1,
AVSampleRateKey: @22050.0f};
NSError *audioRecorderError;
NSURL *audioFileURL = [[self.outputFileURL URLByDeletingPathExtension] URLByAppendingPathExtension:@"m4a"];
self.audioRecorder = [[AVAudioRecorder alloc] initWithURL:audioFileURL
settings:recordSettings
error:&audioRecorderError];
self.audioRecorder.delegate = self;
if (audioRecorderError) {
CCLog(@"Error while initializing the audio recorder... Skipping sound recording!");
}
else {
if (![self.audioRecorder prepareToRecord]) {
CCLog(@"Error preparing to record");
}
if (![self.audioRecorder record]) {
CCLog(@"Error …Run Code Online (Sandbox Code Playgroud) 这里有很多问题要求在后台显示红色记录条.很明显我应该使用AVAudioSession类别AVAudioSessionCategoryPlayAndRecord.我的问题是,在我的应用程序中进行有效的VOIP呼叫时,如何在前台应用程序中显示绿色的通话栏(或至少红色条)?所以我可以回到调用UI点击状态栏区域,就像Whatsapp或Skype一样.
我已经尝试过的:
voip在这个SO答案中建议的Info.plist + + audio中的UIBackgroundModes键和模式(在进行背景时给我一个红色状态栏,但在前景时没有任何内容)setCategory:AVAudioSessionCategoryPlayAndRecordsetActiveAVAudioSession+ setMode:AVAudioSessionModeVoiceChat- 没有用kCFStreamNetworkServiceTypeVoIP在pjsip源中将标志设置为套接字并重新编译它 - 没有帮助.此外,自iOS 8以来已弃用.[self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]从这里获取示例代码)使用pjsip进行通话.还有什么可以尝试增加状态栏高度,将所有UI移动?有没有任何标准方法可以做到这一点,或者我应该通过调整根UIWindow并在状态栏下设置另一个绿色UIWindow来自行破解它?
编辑:由于没有找到标准方法的答案,接受@ roman-ermolov答案.对于那些会寻找答案的人,我可以建议您自己做几个选择: