Question

Puis-je enregistrer plusieurs canaux en même temps en utilisant MediaRecorder ou AudioRecord ?Ce que je veux, c'est pouvoir enregistrer à la fois MediaRecorder.AudioSource.VOICE_UPLINK et VOICE_DOWNLINK en même temps.Peut être divisé en deux fichiers séparés ou dans le même fichier avec deux canaux.J'ai essayé d'utiliser deux instances distinctes de MediaRecorder.Mais seul le premier enregistre.Le second indique que l'entrée n'est pas disponible.J'ai également essayé d'utiliser un MediaRecorder et un AudioRecord en même temps.Encore une fois, les deux fonctionnent individuellement, mais lorsque AudioRecord intervient après le démarrage de MediaRecorder, les erreurs suivantes s'affichent.

05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1
05-21 03:40:42.735: E/AudioRecord-JNI(1322): Error creating AudioRecord instance:     initialization check failed.
05-21 03:40:42.825: E/AudioRecord-Java(1322): [ android.media.AudioRecord ] Error code -20     when initializing native AudioRecord object.

J'ai également essayé de mettre le deuxième MediaRecorder sur un nouveau fil.Encore le même résultat.Cela me fait donc me demander s’il est possible d’enregistrer simultanément.Je pensais aussi si je pouvais utiliser un AudioRecord avec deux canaux pour définir deux entrées distinctes de VOICE_UPLINK et VOICE_DOWNLINK mais je ne sais pas du tout comment définir les sources si c'est possible.

Merci d'avance

MODIFIER:

La réponse de Lucifer signifie qu'AudioRecord ne peut pas être appelé de manière asynchrone avec plusieurs instances exécutées en même temps.Est-ce que quelqu'un sait comment AudioSource.VOICE_UPLINK et AudioSource.VOICE_DOWNLINK peuvent être enregistrés en même temps ?Peut-être en utilisant une seule instance d'AudioRecord avec plusieurs canaux ?

Était-ce utile?

La solution

D'après mes connaissances, l'AudioRecording est une méthode synchronisée.Vous ne pouvez donc pas faire deux enregistrements en même temps.

Lorsque votre code est destiné au deuxième processus d'enregistrement, il affiche l'erreur 05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1 ce qui signifie simplement que le canal d'enregistrement est déjà occupé par le premier.

Cependant, cela peut être possible grâce au traitement parallèle de deux threads de telle manière que le premier thread enregistre pendant une durée spécifique.lorsque le contrôle passe deux seconds threads, le premier thread arrête l'enregistrement et le second commence l'enregistrement et vice versa.Mais avec les appareils mobiles, cela deviendra plus complexe.Il vaut donc mieux enregistrer une chaîne à la fois.

Vous pouvez créer une file d'attente d'enregistrement, qui effectuera les enregistrements un par un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top