我用AVCaptureSession创build了一个相机 。 我已经configuration了照片和录像模式 。 相机和应用程序运行良好。 此外,我允许背景音乐播放 (如果用户使用iPhone中的音乐应用程序播放歌曲),而打开相机或录制video。 它也工作正常。 (附图2) 我允许背景音乐播放与此代码的帮助 AVAudioSession *session1 = [AVAudioSession sharedInstance]; [session1 setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth error:nil]; [session1 setActive:YES error:nil]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 现在,如果我接到电话 ,请点击主页button并打开应用程序,以最小化电话呼叫屏幕,并打开相机屏幕捕捉图像/录制video,打开但冻结图像(附图(1))。 现在我的要求是,我想要通过电话拍摄图像/录制video。 我寻找另一个应用程序,和Snapchat是一样的 ,我可以录制video,而我在电话。 请帮助我,我怎么能做到这一点。
我想使用MPMoviePlayerController播放video,但是我希望它忽略静音开关,类似于Youtubevideo播放器的行为。 有任何想法吗?
我试图编写一个iOS应用程序,将麦克风收到的声音传递给扬声器而不做任何更改。 我已经阅读了苹果文档和指南。 我select了本指南的第一个模式。 但没有任何事情发生 – 沉默 正如你可以看到我试图使用AUAudioGraph(注释) – 相同的结果(我是否需要在这个简单的例子呢?)。 我在互联网上看到了几个使用callback的例子,但我不想使用任何callback。 可能吗? 有什么build议么? 感谢关注。 实际的代码 #import "AudioController.h" #import <AudioToolbox/AudioToolbox.h> #import <AVFoundation/AVFoundation.h> #import <AudioToolbox/AudioServices.h> #define kInputBus 1 #define kOutputBus 0 @interface AudioController () { AudioComponentDescription desc; AudioComponent component; AudioUnit unit; AudioStreamBasicDescription audioFormat; double rate; //AUGraph graph; } @end @implementation AudioController – (void) setUp { AVAudioSession *sess = […]
我的应用程序使用麦克风和输出audio,所以我设置我的audio会话播放和logging类别,但这似乎禁用Airplay。 如果将类别设置为“播放”,则Airplay可以正常播放我的输出(但显然input不起作用)。 我已经尝试覆盖输出路由到扬声器,以防万一它需要通过Airplay输出,但没有喜悦。 有任何想法吗?
随着iOS 7的推出,应用程序必须在要录制audio时请求麦克风访问。 如何检查应用程序是否可以访问麦克风? 在iOS 8 SDK中我可以使用AVAudioSessionRecordPermission枚举,但是如何在iOS 7中检查? 信息: 我不想要求权限,我只是想检查应用程序是否有权访问麦克风。 (如位置访问): if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { // Do something }
我试图通过听筒扬声器播放audio,它工作正常。 相同的代码在以下情况下不起作用。 打开相机录制video 而不是开始录制,取消它 然后,试图通过听筒无法播放audio。 它正在通过主扬声器播放 这是我的代码,通过听筒播放audio。 -(void)initialAVaudioPlayer { if (player==nil) { NSError *error = nil; AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; [session setActive: YES error:nil]; AVAudioSessionPortDescription *routePort = session.currentRoute.outputs.firstObject; NSString *portType = routePort.portType; if ([portType isEqualToString:@"Receiver"]) { [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error]; } else { [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error]; } NSString *path; NSError *err; NSString […]
我开发了iOS 5.0下的iPhone应用程序,它工作正常。 但是当涉及到iOS 4.3(基础SDK =最新的iOS 5.0,编译器=苹果LLVM 3.0,部署目标= iOS 4.3),它启动后崩溃。 崩溃点周围的输出如下所示: 2011-12-06 16:25:08.177 FMWei[466:c203] -[AVAudioSession setMode:error:]: unrecognized selector sent to instance 0x706a7f0 2011-12-06 16:25:08.181 FMWei[466:c203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AVAudioSession setMode:error:]: unrecognized selector sent to instance 0x706a7f0' 它看起来像AVAudioSession没有成员函数setMode:error:当我调用它。 但奇怪的是,我没有调用名为setMode:error:的函数。 有关audio处理的代码是: audio_session = [[AVAudioSession sharedInstance] retain]; audio_session_err = nil; [audio_session setCategory: AVAudioSessionCategoryPlayAndRecord […]
我一直在Google上search和研究,但我似乎无法得到这个工作,我无法find任何解决scheme,在互联网上。 我试图用麦克风捕捉我的声音,然后通过扬声器播放。 这是我的代码: class ViewController: UIViewController, AVAudioRecorderDelegate, AVCaptureAudioDataOutputSampleBufferDelegate { var recordingSession: AVAudioSession! var audioRecorder: AVAudioRecorder! var captureSession: AVCaptureSession! var microphone: AVCaptureDevice! var inputDevice: AVCaptureDeviceInput! var outputDevice: AVCaptureAudioDataOutput! override func viewDidLoad() { super.viewDidLoad() recordingSession = AVAudioSession.sharedInstance() do{ try recordingSession.setCategory(AVAudioSessionCategoryPlayAndRecord) try recordingSession.setMode(AVAudioSessionModeVoiceChat) try recordingSession.setPreferredSampleRate(44000.00) try recordingSession.setPreferredIOBufferDuration(0.2) try recordingSession.setActive(true) recordingSession.requestRecordPermission() { [unowned self] (allowed: Bool) -> Void in […]
自iOS 7更新以来,录制应用程序发生了一些变化。 我有一个应用程序,曾经与iOS 5和6,但当我试图在iOS 7上运行它 – 录音没有回应。 我查了一下互联网,看到有一个需要调用的新方法。 我试图把这个代码放在viewDidAppear中: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]) { [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { NSLog(@"permission : %d", granted); }]; } } “授予”始终是1,虽然我没有授予任何许可,也没有看到任何请求popup。 顺便说一句我想要处理这个使用Xcode 4.6.3。 我用requestRecordPermission方法为AVAudioSession做了一个类,因为这个方法只在iOS 7中可用。 谢谢。
我正在为iPhone和iPad编写一个广播应用程序,并在处理暂停和播放audio时遇到一些奇怪的行为。 我使用AVAudioSessionDelegate方法beginInterruption和endInterruption来分别pause和play AVPlayer。 以下是相关的play代码。 现在,以下情况似乎一致发生: 在iPad上:如果我强制中断(Facetime调用), beginInterruption预期调用beginInterruption并停止播放。 如果中断停止, endInterruption按预期endInterruption被调用,并且播放按照预期恢复。 在iPhone上:按下播放和暂停button,触发pause和play与beginInterruption和endInterruption 。 播放行为如预期。 在iPhone上:强制中断(通过拨打电话),按预期调用endInterruption按照预期暂停播放。 但是,当中断完成时, beginInterruption被调用为预期的, play被调用为预期, 它实际上到达并执行[self.player play]行 ,但播放不会恢复! 我什么也没听到。 以上情况3是非常奇怪的,所以我想知道我是否可能忽略了一些东西。 有任何想法吗? Play代码 – (void)play { NSError* error = nil; AVKeyValueStatus keyStatus = [currentAsset statusOfValueForKey:@"tracks" error:&error]; if(error){ DLog(@"Error %@", [error localizedDescription]); } else { DLog(@"Current Key Status: %i", keyStatus); if(keyStatus == AVKeyValueStatusLoaded){ DLog(@"Continue playing source: […]