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

Composants FMX Delphi Discussion :

TCaptureDeviceManager.Current ne voit pas mes devices audio


Sujet :

Composants FMX Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieurbtélécom en retraite
    Inscrit en
    Septembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieurbtélécom en retraite

    Informations forums :
    Inscription : Septembre 2023
    Messages : 2
    Par défaut TCaptureDeviceManager.Current ne voit pas mes devices audio
    Bonjour,

    En 2019, j'avais utilisé l'exemple donné dans la doc de FMX.Media pour capturer et enregistrer des flux audio depuis un périphérique d'entrée et cela fonctionnait bien (W10 et je crois delphi 10). J'ai de nouveau besoin de cette fonctionnalité, et cela ne fonctionne plus (RAD studio 12 CE + W11) : TCaptureDeviceManager.Current ne voit qu'un seul périphérique d'entrée : la caméra. Il ne voit aucun périphérique audio. J'ai beau chercher dans les autorisations windows, tout me semble correct... Quelqu'un aurait une idée ?

    Ou alors comment accéder aux flux audio en entrée autrement ? J'ai essayé la librairie BASS, apparemment ça ne fonctionne pas non plus : les périphériques audio sont bien vus par BASS, le test système du micro est bon, mais la capture du flux audio en entrée ne fonctionne pas. Le micro est défini comme stéréo (2 canaux) alors que le micro que j'ai branché est mono... Ce serait l'origine du problème ??

    Merci de m'avoir lu,
    Cordiales salutations,
    Alain Reiner

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 785
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    je tique sur TCaptureDeviceManager.Current j'aurais utilisé (conformément à docwiki)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      AudioCapture : TAudioCaptureDevice;
    begin
      // Get access to the default audio capture device
      AudioCapture:= TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
      if AudioCapture <> nil then
      begin
         // todo 
      end;
    end;
    un test à faire, obtenir la liste des devices audio
    raidement
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    type
      TForm5 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form5: TForm5;
     
    implementation
     
    {$R *.fmx}
     
    uses   System.Generics.Collections, FMX.Media;
     
    procedure TForm5.Button1Click(Sender: TObject);
    var MediaManager : TCaptureDeviceManager;
        MediaList : TCaptureDeviceList;
        CD : TCaptureDevice;
        i : integer;
    begin
      MediaManager:=TCaptureDeviceManager.current;
      memo1.lines.Add('nombre de devices '+mediamanager.Count.ToString);
      for i:=0 to Mediamanager.count-1 do
          memo1.lines.Add(i.ToString+' '+Mediamanager.Devices[i].Name+' '+Mediamanager.Devices[i].Description);
      memo1.lines.add('');
      Medialist:=Mediamanager.GetDevicesByMediaType(TMediaType.Audio);
      memo1.lines.Add('nombre de devices audio '+mediaList.Count.ToString);
      for CD in  Medialist do
          memo1.lines.Add(CD.Name+' '+CD.Description);
      memo1.lines.add('');
      CD:=Mediamanager.GetDefaultDeviceByMediaType(TMediaType.Audio);
      Memo1.lines.Add('Défaut audio '+CD.Name);
     
    end;
    sous Windows 10
    Nom : Capture.PNG
Affichages : 174
Taille : 9,3 Ko
    Note : je n'ai pu faire qu'un test sous Windows 11 dans une VM moins concluant (uniquement l'audiodevice de détecté) surtout parce que j'ai un problème d'affichage que je ne comprend pas malgré un ajout de style j'ai des zones (dont le mémo) sombres -> problème de config de ma VM ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieurbtélécom en retraite
    Inscrit en
    Septembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieurbtélécom en retraite

    Informations forums :
    Inscription : Septembre 2023
    Messages : 2
    Par défaut
    Bonjour et merci de cette réponse rapide.

    J'ai décrit mon problème de façon générique et trop rapide. Je détaille :

    Oui, j'utilise bien le code conseillé :

    Liste des périphériques de capture :

    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
    procedure TForm1.ButtonListeClick(Sender: TObject);
    var
      NB_DEV, I : integer;
      MON_DEVICE_AUDIO : TCaptureDevice;
    begin
     
      NB_DEV := TCaptureDeviceManager.Current.Count;
      Memo.Lines.Add( 'Nbre de devices : ' + IntToStr( NB_DEV ) );
      for I := 0 to NB_DEV-1 do
        Memo.Lines.Add( TCaptureDeviceManager.Current.Devices[ I ].Name );
      if TCaptureDeviceManager.Current.DefaultVideoCaptureDevice <> NIL then  Memo.Lines.Add( TCaptureDeviceManager.Current.DefaultVideoCaptureDevice.Name );
      if TCaptureDeviceManager.Current.DefaultAudioCaptureDevice <> NIL then  Memo.Lines.Add( TCaptureDeviceManager.Current.DefaultAudioCaptureDevice.Name );
      MON_DEVICE_AUDIO := TCaptureDeviceManager.Current.GetDevicesByName( 'Microphone' );
      if MON_DEVICE_AUDIO <> NIL then Memo.Lines.Add( MON_DEVICE_AUDIO.Name );
     
    end;
    résultat obtenu :

    Nom : liste périphériques de capture.png
Affichages : 165
Taille : 8,1 Ko

    Enregistrement :

    l'objet Mic est déclaré comme :
    Mic: TAudioCaptureDevice;
    dans la partie Public de TForm1.

    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
    procedure TForm1.ButtonRecordClick(Sender: TObject);
    begin
     
      Mic := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
      if Mic <> nil then
      begin
        //Set the SaveDialog filter to choose only the supported extension
        SaveDialog1.Filter :=  Mic.FilterString;
        if SaveDialog1.Execute then
        begin
          ButtonRecord.Enabled := false;
          ButtonStopRecord.Enabled := true;
          //Gets the name of the file where to save the recorded data
          Mic.FileName := SaveDialog1.FileName;
          Mic.StartCapture;
        end;
      end
      else
      begin
        ShowMessage('Audio capturing device not available');
      end;
     
    end;
    résultat obtenu :

    Nom : pas vu.png
Affichages : 163
Taille : 17,6 Ko

    Ma conclusion : Mes périphériques d'entrée audio ne sont pas vu par TCaptureDeviceManager.Current.DefaultAudioCaptureDevice.

    ci-dessous, mes périphériques d'entrée audio :

    Nom : périphériques audio.png
Affichages : 163
Taille : 33,1 Ko

    1 micro et 3 câbles audio virtuels.

    Merci encore, et bonne journée.
    Alain Reiner

Discussions similaires

  1. SVN ne voit pas les modifications faites sur mes fichiers
    Par LGnord dans le forum Subversion
    Réponses: 1
    Dernier message: 03/05/2011, 16h36
  2. Un des mes jar ne voit pas une de mes classes
    Par Shogun dans le forum Général Java
    Réponses: 1
    Dernier message: 03/07/2009, 14h20
  3. Réponses: 2
    Dernier message: 05/10/2007, 11h04
  4. [MSDE] Probleme SQLAgent ne voit pas mes instances/serveur
    Par papouAlain dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/03/2006, 14h04
  5. [Debutant(e)]Eclipse ne voit pas les sources
    Par uliss dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 04/08/2004, 10h34

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