IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Streaming micro vers PC


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut Streaming micro vers PC
    Bonsoir.

    Je voudrais faire de la VoIP entre mon smartphone et mon pc. Pour cela, je capture le flux du micro du smartphone (cf code ci-dessous), et je l'envoie sur mon pc via socket. Pour le moment le programme sur le pc se contente d'enregistrer ce qu'il reçoit dans un fichier afin de vérifier que les données reçues sont correctes.
    Mon souci c'est que les données ne sont pas du tout correctes, elles ont l'air d'être répliquées plusieurs fois, du coup le fichier est illisible avec un lecteur audio.

    Le code ressemble en gros à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    OutputStream out = socket.getOutputStream();
     
    android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
    int buffersize = AudioRecord.getMinBufferSize(
    			11025,
    			AudioFormat.CHANNEL_CONFIGURATION_MONO,
    			AudioFormat.ENCODING_PCM_16BIT);
     
    AudioRecord arec = new AudioRecord(
    			MediaRecorder.AudioSource.MIC,
            	        11025,
    			AudioFormat.CHANNEL_CONFIGURATION_MONO,
    			AudioFormat.ENCODING_PCM_16BIT,
    			buffersize);
     
    byte[] buffer = new byte[buffersize];
    arec.startRecording();
    while(true) {
    	arec.read(buffer, 0, buffersize);
    	out.write(buffer, 0, buffersize);
    	out.flush();
    }
    Je pense que les données enregistrées par le micro s'écrivent dans un buffer et que donc je lis ce buffer trop souvent, ce qui me renvoie plein de fois la même chose...

    Une idée de la bonne marche à suivre ? J'ai trouvé plein de bouts de code sur le net mais j'ai ce problème avec tous.

    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    C'est peut être pas une bonne idée de le faire là .

    Des liens pour t'aider :
    http://stackoverflow.com/questions/9...lback-handling

    ou

    http://stackoverflow.com/questions/4...-callback-func


    Cel peut être intéressant d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     OnRecordPositionUpdateListener positionUpdater = new OnRecordPositionUpdateListener()
            {
    à toi de voir.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Cela fait un bout de temps que je n'ai pas touché aux sockets...

    Mais en règle général, la lecture d'un flux (socket ou buffer audio) se fait dans le genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    whilte (true) {
        int length = src.read(buffer,0,size);
        if (length > 0)
            dest.write(buffer,0,length);
    }
    Me trompe-je ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. migrer d'un TSX micro vers TSX premium
    Par LePingouin dans le forum Automation
    Réponses: 3
    Dernier message: 07/07/2011, 08h54
  2. Rediriger entrée micro vers sortie audio
    Par Viggen0020 dans le forum Windows Vista
    Réponses: 1
    Dernier message: 28/05/2009, 10h53
  3. transfert ftp sous excel200 de micro vers IBM
    Par marti dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/02/2008, 15h17
  4. Video Streaming diffusion vers Freebox
    Par themadmax dans le forum Vidéo
    Réponses: 0
    Dernier message: 09/09/2007, 13h41
  5. image vers stream
    Par tidoc dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/08/2007, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo