9

AVCaptureSession kullanarak videoları sesli olarak kaydetmek istiyorum. Benim app aynı zamanda ses ile video oynattığından, bunun için AudioSessionCategory AVAudioSessionCategoryPlayAndRecord gerekir.AVAudioSession AVAudioSessionCategoryPlayAndRecord glitch

Sesin varsayılan hoparlörden duyulmasını istiyorum ve diğer seslerle karıştırılmasını istiyorum. Bu yüzden AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers seçeneklerine ihtiyacım var.

diğer ses diğer uygulamadan ses net bir sesli aksaklık olduğunu çalarken ben aşağıdakileri yapın:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 

bu aksaklık kurtulmak için bir yol var mı?

AVAudioSessionRouteChangeReasonCategoryChange tarafından belirtildiği gibi, mikrofon girişi olmaksızın mikrofon girişine bildirildiğinde ortaya çıkıyor.

Uygulama arka plana gittiğinde (ses oturumunu devre dışı bırakırken veya devre dışı bırakmadan) yapılandırma değişikliği (ve glitch) da oluşur. Ses oturumunu devre dışı bırakmadan arka plandan dönerken, AVCaptureSession yapılandırması değiştirildiğinde, yani kamera önden arkaya geçtiğinde, hatalar oluşmaya başlar. Bu durumda ses yönlendirmesine dokunulmaz ve sadece ses oturumunu devre dışı bırakmadan arka plandan döndüğünde gerçekleşir. Rotanın değiştiğine dair bildirim iki kez ateşlenir. Mikrofonu bir kez devre dışı bırakmak ve tekrar etkinleştirmek için bir kez.

Bu davranış, Apple'ın AVCamManual örneğini indirerek kolayca yeniden üretilebilir olduğunu unutmayın. Bunu

ilk AVAudioSessionCategoryAmbient ses kategorisini ayarlayın ve aktive: ilgili olabilir

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 
… 
session.usesApplicationAudioSession = YES; 
session.automaticallyConfiguresApplicationAudioSession = NO; 

Diğer bazı garip bir şey,: viewDidLoadAAPLCameraViewController.m arasında aşağıdaki ekleyin sonra

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions:0 error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 

ve kategoriyi değiştir:

Seçenekler bayrağı rağmenbaşka ses çalma durur. Hata atılmadı.
+0

Aynı sorunlarım var. Mektuba. Bu konuda haber var mı? – ancajic

+0

Seçenek bayrağına rağmen sesin durduğu son örneğiniz için. Ses oturumu devre dışı bırakırsanız ses çalmaya devam eder ('[[AVAudioSession sharedInstance] setActive: NO withOptions: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error: nil];') kategorisini ayarlamadan önce [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord withOptions: AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error: nil]; '. 'dan sonra yeniden etkinleştirin ('[[AVAudioSession sharedInstance] setActive: YES hatası: nil];') – ancajic

+0

Aynı sorunları yaşayarak, her zaman PlayAndRecord kullanarak denediniz: http://stackoverflow.com/questions/35496563/avcapturesession-addinput-aksaklık-in-arka plan-ses neden olur. Ayrıca kayıt başladığında "Ortam" kategorisini değiştirerek çalışmayı denediniz: http://stackoverflow.com/questions/35615707/avaudiosession-setcategory-not-working. Metot, – Cbas

cevap

0

@Cbas tarafından yorumlarda belirtildiği gibi, bir Apple Çalışanı, yalnızca çıkıştan giriş + çıkış yollarına geçiş yaparken hata olduğunu onaylamıştır ve bu sorun için bir çözüm bulunmadığından, olası bir geçici çözümün tamamen engellenmesidir. Uygulama kaydedilmediğinde bile her zaman AVAudioSessionCategoryPlayAndRecord kategorisini kullanarak çıkış-çıkışından giriş-çıkış rotalarına geçiş yapabilirsiniz. Ayrıca, daha önce AVAudioSessionCategoryPlayAndRecord olarak ayarlanmışsa veya aksaklık meydana gelirse, ses oturumu kategorisini tekrar ayarlamayın.

İlgili konular