相关疑难解决方法(0)

AVAudioRecorder不支持iPhone 5S

所以我正在使用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)

iphone objective-c avaudiorecorder ios

13
推荐指数
1
解决办法
3434
查看次数

如何在设备上的前台app中显示双倍高度绿色状态栏(In-Call)?

这里有很多问题要求在后台显示红色记录条.很明显我应该使用AVAudioSession类别AVAudioSessionCategoryPlayAndRecord.我的问题是,在我的应用程序中进行有效的VOIP呼叫时,如何在前台应用程序中显示绿色的通话栏(或至少红色条)?所以我可以回到调用UI点击状态栏区域,就像Whatsapp或Skype一样.

我已经尝试过的:

  • voip在这个SO答案中建议的Info.plist + + audio中的UIBackgroundModes键和模式(在进行背景时给我一个红色状态栏,但在前景时没有任何内容)setCategory:AVAudioSessionCategoryPlayAndRecordsetActive
  • 以前的+ AVAudioSession+ setMode:AVAudioSessionModeVoiceChat- 没有用
  • kCFStreamNetworkServiceTypeVoIP在pjsip源中将标志设置为套接字并重新编译它 - 没有帮助.此外,自iOS 8以来已弃用.
  • 创建一个单独的套接字,为inputStream/outputStream设置voip标志:( [self.inputStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]这里获取示例代码)

使用pjsip进行通话.还有什么可以尝试增加状态栏高度,将所有UI移动?有没有任何标准方法可以做到这一点,或者我应该通过调整根UIWindow并在状态栏下设置另一个绿色UIWindow来自行破解它?


编辑:由于没有找到标准方法的答案,接受@ roman-ermolov答案.对于那些会寻找答案的人,我可以建议您自己做几个选择:

  1. 将根视图控制器包装在容器中,就像Apple的iAdSuite with Storyboards示例一样.以我的示例项目为例.可能是制作那个酒吧的最佳方式.
  2. Hack UINavigationBar height(参见方法) - 尚未用于横向,但可能已经解决
  3. 自己控制主UIWindow的框架,在状态栏下放置另一个UIWindow,其中包含所需的内容.

voip pjsip ios uistatusbar in-call

8
推荐指数
1
解决办法
1227
查看次数

标签 统计

ios ×2

avaudiorecorder ×1

in-call ×1

iphone ×1

objective-c ×1

pjsip ×1

uistatusbar ×1

voip ×1