9
votes

Utilisez le microphone arrière de l'iPhone 5

J'ai utilisé pour suivre code le flux i / o de l'audio de microphone. Ce que je veux faire, c'est de vouloir sélectionner le microphone arrière pour l'enregistrement. J'ai lu ce paramètre KaudiosessionProperty_mode à KaudiosessionMode_Videorecording peut faire le travail mais je ne sais pas comment utiliser cela avec mon code. Quelqu'un peut-il m'aider à définir ce paramètre avec succès.

J'ai ces lignes pour définir la propriété P>

status = AudioUnitSetProperty(audioUnit,
                              kAudioSessionProperty_Mode,
                              kAudioSessionMode_VideoRecording,
                              kOutputBus,
                              &audioFormat,
                              sizeof(audioFormat));
checkStatus(status);


6 commentaires

Avez-vous un code que cela ne fonctionne pas?


@Abizem j'ai édité ma réponse.


Jetez un coup d'œil à cette note Apple Tech: développeur.apple.com/ Bibliothèque / Mac / # Technotes / TN2091 / _Index.htm l


J'ai lu ceci, mais pas capable de résoudre le problème pourriez-vous donner plus d'aide à donner une réponse plus précise.


@WILL - Vous avez mentionné des applications sur l'App Store qui fait cela - Pouvez-vous nommer quelques exemples?


@Hewas iTunes.apple.com/us/ App / Babyscope-for-iPhone5-iPod5 / ...


3 Réponses :


5
votes

J'ai fait de la recherche et de la lecture. Enfin fini dans la référence de la classe AvcApredEvice. La commande de clé ici pour vous est nslog (@ "% @", [Dispositifs AVCApureDevice]); code>. J'ai couru cela avec mon iPhone ci-joint et obtenu ceci:

"<AVCaptureFigVideoDevice: 0x1fd43a50 [Back Camera][com.apple.avfoundation.avcapturedevice.built-in_video:0]>",
"<AVCaptureFigVideoDevice: 0x1fd47230 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]>",
"<AVCaptureFigAudioDevice: 0x1fd46730 [Microphone][com.apple.avfoundation.avcapturedevice.built-in_audio:0]>"


2 commentaires

Mais il existe des applications sur AppStore qui capturent du microphone arrière.


Ne sais pas quoi vous dire. C'est vrai que l'iPhone a 2 microphones, mais cela ne veut pas dire que vous pouvez contrôler lequel est utilisé maintenant. Le microphone supérieur semble être utilisé lorsque la vidéo est enregistrée ou lorsque le téléphone haut-parleur est activé. Le micro inférieur est utilisé pour les appels téléphoniques, les enregistrements audio uniquement et le filtrage de l'annulation du bruit. D'après ce que je peux rassembler, Apple veut faire sa propre chose pour l'instant sur la manière dont les 2 microphones sont utilisés et quand. Jetez un coup d'œil à ce lien iPhoneinCanada .ca / Comment / ...



6
votes

dans la bibliothèque de développeurs Apple Cliquez ici

Vous pouvez voir une méthode spécifique xxx

Vous pouvez modifier AudioChannelDescription à 2 pour utiliser un microphone secondaire


1 commentaires

Votre réponse pointe sur l'utilisation des deux microphones simultanément. La question est de savoir comment utiliser uniquement le microphone arrière. Ou suis-je incorrect?



4
votes

Votre code:

    - (void) configureAudioSession
    {
        OSStatus status;

        //initialise the audio session
        status = AudioSessionInitialize ( NULL
                                         //runloop
                                         , kCFRunLoopDefaultMode
                                         //runloopmode
                                         , NULL
                                         //MyInterruptionListener
                                         , (__bridge void *)(self)
                                         //user info
                                         );

        //set the audio session category
        UInt32 category = kAudioSessionCategory_PlayAndRecord;
        status = AudioSessionSetProperty ( kAudioSessionProperty_AudioCategory
                                          , sizeof(category)
                                          , &category);
                                                        checkStatus(status);

        //set the audio session mode
        UInt32 mode = kAudioSessionMode_VideoRecording;
        status = AudioSessionSetProperty(kAudioSessionMode_VideoRecording
                                            , sizeof(mode)
                                            , &mode);
        checkStatus(status);

        //activate the audio session
        status = AudioSessionSetActive(true);
        checkStatus(status);


    }


0 commentaires