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

C++Builder Discussion :

Enregistrement du son par programme


Sujet :

C++Builder

  1. #1
    Invité
    Invité(e)
    Par défaut Enregistrement du son par programme
    Bonjour,

    Je voudrais savoir comment enregistrer un son à partir d'un microphone branché sur le connecteur entrée de ma carte son et générer un .wav en sortie.

    Je sais que l'on peut le faire avec les utilitaires livrés dans Windows, mais je voudrais réaliser l'enregistement moi-même.

    J'ai la même question avec une Web cam...

    Mercii.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    Pour le son :
    Je crois que tu devra passer par les API Windows. Et ça, ça n'est pas simple.

    Ou alors tu peux utiliser l'API DirectX (DirectSound) qui sera peut-être plus simple.

    Je ne me rapelle plus des fonctions à appeler par contre. Désolé.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Tu va trouver ton bonheur ici :

    http://www.bridgespublishing.com/articles/issues/9810/Low-level_wave_audio__part_3.htm

    Les explications sont données pas à pas !

    Ou cherches avec GOOGLE : waveInPrepareHeader si le lien ne fonctionne pas ! Il y a d'autres liens en particulier vers MS.

    A plus et ... bon courage !

    PS Je vais essayer de suivre le sujet mais je ne suis disponible qu'à des moments
    imprévisibles donc... ne pas s'énerver !

  4. #4
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    En principe, on peut passer par le TMediaPlayer de C++ Builder, je vous donne un début de solution.

    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
    void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,
          TMPBtnType Button, bool &DoDefault)
    {
    if(Button==btPlay)
    {
    MediaPlayer1->Wait=true;
    MediaPlayer1->Open();
    MediaPlayer1->Play();
    }
     
    if(Button==btRecord)
    {
    MediaPlayer1->EnabledButtons<<btStop;
    MediaPlayer1->StartRecording();
    }
     
    if(Button==btStop)
    {
    MediaPlayer1->Save();
    }
    }

    Pour que ça marche, mettez un wave quelconque dans le répertoire du projet (trouvez en un très court parmi les sons présents dans votre ordinateur) et faites pointer FileName de MedialPlayer1 sur ce fichier en cliquant les trois petits points. En cliquant Play à l'exécution, vous entendez le son. En cliquant Record (le point rouge), vous enregistrez, le bouton Stop est alors valide et vous pouvez vous écouter.

    Le problème est qu'il enregsitre à la suite. Si vous écrivez avant d'enresgitrer MediaPlayer1->Rewind() vous enregistrerez au début mais le reste sera maintenu, je ne sais pas trop comment faire pour écrire à partir d'un fichier Wave vide, ça ne doit pas être sorcier mais je n'ai pas le temps de chercher ce détail, si vous trouvez, indiquez-nous comment vous avez fait. Vous ne pouvez pas détruire le fichier Wave en mode Open, le delete par DeleteFile sera refusé. Si vous faites MediaPlayer1->Close puis DeleteFile puis CreateFile puis MediaPlayer1->Open(), il y a erreur à l'exécution, donc je ne vois pas bien ce point pour l'instant.

    Pour la prise d'images, ca doit être à peu près pareil si ce n'est que les fichiers sont du type avi.

    À bientôt
    Gilles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2012, 12h12
  2. Réponses: 1
    Dernier message: 01/11/2008, 20h16
  3. Réponses: 2
    Dernier message: 22/01/2008, 21h03
  4. [FMS/Red5] Enregistrement de son par l'utilisateur
    Par BnA dans le forum Dynamique
    Réponses: 5
    Dernier message: 13/11/2006, 09h29
  5. [DLL] Enregistrer DLL (COM) par programmation
    Par pataguillon dans le forum MFC
    Réponses: 5
    Dernier message: 14/03/2006, 14h01

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