{"id":1711,"date":"2026-07-09T23:56:40","date_gmt":"2026-07-10T02:56:40","guid":{"rendered":"https:\/\/code4delphi.com.br\/blog\/?p=1711"},"modified":"2026-07-12T17:42:14","modified_gmt":"2026-07-12T20:42:14","slug":"gravacao-e-reproducao-de-audios-no-delphi","status":"publish","type":"post","link":"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/","title":{"rendered":"Grava\u00e7\u00e3o e reprodu\u00e7\u00e3o de \u00e1udios no Delphi de forma simples e r\u00e1pida"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Adicionar recursos de \u00e1udio a uma aplica\u00e7\u00e3o Delphi pode ser \u00fatil em diversos tipos de projetos, como sistemas de atendimento, prontu\u00e1rios, aplicativos educacionais, grava\u00e7\u00e3o de observa\u00e7\u00f5es, assistentes virtuais e solu\u00e7\u00f5es que utilizam reconhecimento de voz ou Intelig\u00eancia Artificial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste artigo, vamos conhecer a <strong>DelphiAudio<\/strong>, uma biblioteca leve que permite gravar \u00e1udios diretamente no formato MP3 e reproduzir arquivos de \u00e1udio em aplica\u00e7\u00f5es Delphi de forma simples e r\u00e1pida. <strong>E sem a necessidade de instalar componentes visuais.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"506\" src=\"https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/DelphiAudio-Menor.png\" alt=\"\" class=\"wp-image-1760\" srcset=\"https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/DelphiAudio-Menor.png 900w, https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/DelphiAudio-Menor-300x169.png 300w, https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/DelphiAudio-Menor-768x432.png 768w, https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/DelphiAudio-Menor-520x293.png 520w, https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/DelphiAudio-Menor-920x518.png 920w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">Sum\u00e1rio<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabela de conte\u00fado\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Conhecendo_a_DelphiAudio\" >Conhecendo a DelphiAudio<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Como_utilizar_a_DelphiAudio\" >Como utilizar a DelphiAudio<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Adicionando_a_biblioteca_ao_projeto\" >Adicionando a biblioteca ao projeto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#DLLs_necessarias\" >DLLs necess\u00e1rias<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Gravando_diretamente_em_MP3\" >Gravando diretamente em MP3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Listando_os_dispositivos_de_gravacao\" >Listando os dispositivos de grava\u00e7\u00e3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Iniciando_a_gravacao\" >Iniciando a grava\u00e7\u00e3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Interrompendo_a_gravacao\" >Interrompendo a grava\u00e7\u00e3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Reproduzindo_o_audio_gravado\" >Reproduzindo o \u00e1udio gravado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Salvando_a_gravacao_em_MP3\" >Salvando a grava\u00e7\u00e3o em MP3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Reproduzindo_um_arquivo_MP3\" >Reproduzindo um arquivo MP3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Utilizando_o_audio_em_uma_stream\" >Utilizando o \u00e1udio em uma stream<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Projeto_completo_de_demonstracao\" >Projeto completo de demonstra\u00e7\u00e3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Video_completo_no_canal_da_Code4Delphi\" >V\u00eddeo completo no canal da Code4Delphi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Repositorio_oficial_da_biblioteca\" >Reposit\u00f3rio oficial da biblioteca<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/code4delphi.com.br\/blog\/gravacao-e-reproducao-de-audios-no-delphi\/#Conclusao\" >Conclus\u00e3o<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conhecendo_a_DelphiAudio\"><\/span>Conhecendo a DelphiAudio<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A DelphiAudio \u00e9 uma biblioteca de c\u00f3digo Delphi gratuita criada para facilitar a implementa\u00e7\u00e3o de recursos de grava\u00e7\u00e3o e reprodu\u00e7\u00e3o de \u00e1udio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com ela, podemos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gravar \u00e1udio diretamente em um arquivo MP3;<\/li>\n\n\n\n<li>Gravar o \u00e1udio em uma stream;<\/li>\n\n\n\n<li>Reproduzir arquivos MP3;<\/li>\n\n\n\n<li>Iniciar e interromper uma grava\u00e7\u00e3o;<\/li>\n\n\n\n<li>Adicionar recursos de \u00e1udio sem a necessidade de instalar componentes visuais no Delphi.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A biblioteca possui uma estrutura leve e pode ser utilizada em aplica\u00e7\u00f5es VCL para Windows, tanto em projetos Win32 quanto Win64. Para cada plataforma, devem ser utilizadas as DLLs correspondentes disponibilizadas no reposit\u00f3rio oficial.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_utilizar_a_DelphiAudio\"><\/span>Como utilizar a DelphiAudio<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O processo b\u00e1sico de uso consiste em adicionar a unit <strong>AudioRecorder.pas<\/strong> ao projeto e copiar as <strong>DLLs<\/strong> necess\u00e1rias para a pasta do execut\u00e1vel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O primeiro passo \u00e9 acessar o <a href=\"https:\/\/github.com\/tmssoftware\/DelphiAudio\" target=\"_blank\" rel=\"noreferrer noopener\">reposit\u00f3rio <\/a>baixar os arquivos e adicionar a unit <strong>AudioRecorder.pas<\/strong> ao projeto Delphi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa unit cont\u00e9m as classes e rotinas respons\u00e1veis pela captura, codifica\u00e7\u00e3o e reprodu\u00e7\u00e3o do \u00e1udio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Adicionando_a_biblioteca_ao_projeto\"><\/span>Adicionando a biblioteca ao projeto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de baixar ou clonar o reposit\u00f3rio, adicione o arquivo <strong>AudioRecorder.pas<\/strong> ao seu projeto. No Delphi, isso pode ser feito pelo menu: <strong>Project &gt; Add to Project<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outra op\u00e7\u00e3o \u00e9 adicionar a pasta da biblioteca ao <strong>Library Path<\/strong> ou ao <strong>Search Path<\/strong> do projeto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"DLLs_necessarias\"><\/span>DLLs necess\u00e1rias<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m da unit Delphi, a biblioteca utiliza DLLs de suporte para realizar a codifica\u00e7\u00e3o do \u00e1udio no formato MP3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As DLLs utilizadas s\u00e3o:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>lame_enc.dll\nlibmp3lame.dll<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">lame_enc.dll<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">libmp3lame.dll<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esses arquivos devem ser copiados para a mesma pasta do execut\u00e1vel da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 importante utilizar as vers\u00f5es corretas das DLLs de acordo com a plataforma selecionada no Delphi, as DLLs est\u00e3o dispon\u00edveis no reposit\u00f3rio:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"285\" height=\"183\" src=\"https:\/\/code4delphi.com.br\/blog\/wp-content\/uploads\/2026\/07\/image-2.png\" alt=\"\" class=\"wp-image-1720\" style=\"width:230px;height:auto\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Gravando_diretamente_em_MP3\"><\/span>Gravando diretamente em MP3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Uma das principais vantagens da DelphiAudio \u00e9 permitir que o \u00e1udio capturado pelo microfone seja salvo diretamente no formato MP3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No projeto, utilizamos a classe <strong>TAudioRecorder<\/strong>, dispon\u00edvel na unit <strong>AudioRecorder<\/strong>.pas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro, adicionamos a unit ao <strong>uses<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>uses\n  AudioRecorder;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">uses<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  AudioRecorder;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depois, declaramos uma vari\u00e1vel privada:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private\n  FAudioRecorder: TAudioRecorder;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">private<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder: TAudioRecorder;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Criamos a inst\u00e2ncia no evento <strong>OnCreate <\/strong>do formul\u00e1rio:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TMainView.FormCreate(Sender: TObject);\nbegin\n  FAudioRecorder := TAudioRecorder.Create;\nend;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">procedure<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">TMainView.FormCreate<\/span><span style=\"color: #F6F6F4\">(Sender: TObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder := TAudioRecorder.Create;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">E liberamos o objeto no <strong>OnDestroy<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TMainView.FormDestroy(Sender: TObject);\nbegin\n  FAudioRecorder.Free;\nend;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">procedure<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">TMainView.FormDestroy<\/span><span style=\"color: #F6F6F4\">(Sender: TObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder.Free;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Listando_os_dispositivos_de_gravacao\"><\/span>Listando os dispositivos de grava\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para listar os microfones dispon\u00edveis no computador, utilizamos o m\u00e9todo GetDevices:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>cBoxDevice.Items.Assign(FAudioRecorder.GetDevices);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">cBoxDevice.Items.Assign(FAudioRecorder.GetDevices);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Os dispositivos encontrados s\u00e3o adicionados a um <strong>TComboBox<\/strong> chamado <strong>cBoxDevice<\/strong>, permitindo selecionar qual ser\u00e1 utilizado na grava\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Iniciando_a_gravacao\"><\/span>Iniciando a grava\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de iniciar uma nova grava\u00e7\u00e3o, limpamos os dados anteriores com <strong>ClearRecordedData<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, chamamos <strong>StartRecording<\/strong>, informando o \u00edndice do microfone selecionado (caso n\u00e3o seja informado ser\u00e1 utilizado o microfone padr\u00e3o do Windows):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TMainView.btnStartRecordingClick(Sender: TObject);\nbegin\n  FAudioRecorder.ClearRecordedData;\n  FAudioRecorder.StartRecording(cBoxDevice.ItemIndex);\nend;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">procedure<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">TMainView.btnStartRecordingClick<\/span><span style=\"color: #F6F6F4\">(Sender: TObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder.ClearRecordedData;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder.StartRecording(cBoxDevice.ItemIndex);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Interrompendo_a_gravacao\"><\/span>Interrompendo a grava\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para finalizar a grava\u00e7\u00e3o, utilizamos o m\u00e9todo <strong>StopRecording<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TMainView.btnStopRecordingClick(Sender: TObject);\nbegin\n  Sleep(500);\n  FAudioRecorder.StopRecording;\nend;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">procedure<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">TMainView.btnStopRecordingClick<\/span><span style=\"color: #F6F6F4\">(Sender: TObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  Sleep(<\/span><span style=\"color: #BF9EEE\">500<\/span><span style=\"color: #F6F6F4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder.StopRecording;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s isso, o \u00e1udio permanece dispon\u00edvel para ser reproduzido ou salvo em MP3.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Reproduzindo_o_audio_gravado\"><\/span>Reproduzindo o \u00e1udio gravado<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A grava\u00e7\u00e3o pode ser reproduzida diretamente da mem\u00f3ria, sem a necessidade de salvar um arquivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para isso, obtemos uma <strong>TMemoryStream<\/strong> com o m\u00e9todo <strong>GetMP3Stream<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TMainView.btnPlayRecordingClick(Sender: TObject); \nvar \n  LAudioStream: TMemoryStream; \nbegin \n  LAudioStream := FAudioRecorder.GetMP3Stream(20500); \n  try \n    LAudioStream.Position := 0; \n    FAudioRecorder.PlayMP3FromStream(LAudioStream); \n  finally \n    LAudioStream.Free; \n  end; \nend;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">procedure<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">TMainView.btnPlayRecordingClick<\/span><span style=\"color: #F6F6F4\">(Sender: TObject); <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">var<\/span><span style=\"color: #F6F6F4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  LAudioStream: TMemoryStream; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><span style=\"color: #F6F6F4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  LAudioStream := FAudioRecorder.GetMP3Stream(<\/span><span style=\"color: #BF9EEE\">20500<\/span><span style=\"color: #F6F6F4\">); <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">try<\/span><span style=\"color: #F6F6F4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    LAudioStream.Position := <\/span><span style=\"color: #BF9EEE\">0<\/span><span style=\"color: #F6F6F4\">; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    FAudioRecorder.PlayMP3FromStream(LAudioStream); <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">finally<\/span><span style=\"color: #F6F6F4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    LAudioStream.Free; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esse recurso tamb\u00e9m permite utilizar o \u00e1udio em integra\u00e7\u00f5es com APIs, bancos de dados ou servi\u00e7os de transcri\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Salvando_a_gravacao_em_MP3\"><\/span>Salvando a grava\u00e7\u00e3o em MP3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para salvar o \u00e1udio gravado, utilizamos o m\u00e9todo <strong>SaveToMP3<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>FAudioRecorder.SaveToMP3(ExtractFilePath(Application.ExeName) + 'gravacao.mp3);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">FAudioRecorder.SaveToMP3(ExtractFilePath(Application.ExeName) + <\/span><span style=\"color: #DEE492\">&#39;<\/span><span style=\"color: #E7EE98\">gravacao.mp3);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Reproduzindo_um_arquivo_MP3\"><\/span>Reproduzindo um arquivo MP3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m de reproduzir a grava\u00e7\u00e3o atual, tamb\u00e9m podemos abrir qualquer arquivo MP3:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TMainView.btnPlayAudioMP3Click(Sender: TObject);\nbegin\n  if not OpenDialog1.Execute then\n    Exit;\n\n  FAudioRecorder.PlayMP3FromFile(OpenDialog1.FileName);\nend;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">procedure<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #62E884\">TMainView.btnPlayAudioMP3Click<\/span><span style=\"color: #F6F6F4\">(Sender: TObject);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">if<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #F286C4\">not<\/span><span style=\"color: #F6F6F4\"> OpenDialog1.Execute <\/span><span style=\"color: #F286C4\">then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #F286C4\">Exit<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  FAudioRecorder.PlayMP3FromFile(OpenDialog1.FileName);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">O arquivo selecionado no <strong>TOpenDialog <\/strong>\u00e9 enviado ao m\u00e9todo <strong>PlayMP3FromFile<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Utilizando_o_audio_em_uma_stream\"><\/span>Utilizando o \u00e1udio em uma stream<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A possibilidade de obter o \u00e1udio em uma <strong>TMemoryStream <\/strong>facilita diversas integra\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos utilizar essa stream para:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Armazenar o \u00e1udio em um campo BLOB;<\/li>\n\n\n\n<li>Enviar o arquivo para uma API REST;<\/li>\n\n\n\n<li>Realizar upload para um servidor;<\/li>\n\n\n\n<li>Integrar com servi\u00e7os de transcri\u00e7\u00e3o;<\/li>\n\n\n\n<li>Processar o \u00e1udio com Intelig\u00eancia Artificial.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para obter a stream:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var\n  LAudioStream: TMemoryStream;\nbegin\n  LAudioStream := FAudioRecorder.GetMP3Stream(20500);\n  try\n    LAudioStream.Position := 0;\n\n    \/\/ Utilize a stream conforme a necessidade da aplica\u00e7\u00e3o.\n  finally\n    LAudioStream.Free;\n  end;\nend;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F286C4\">var<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  LAudioStream: TMemoryStream;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  LAudioStream := FAudioRecorder.GetMP3Stream(<\/span><span style=\"color: #BF9EEE\">20500<\/span><span style=\"color: #F6F6F4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    LAudioStream.Position := <\/span><span style=\"color: #BF9EEE\">0<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    <\/span><span style=\"color: #7B7F8B\">\/\/ Utilize a stream conforme a necessidade da aplica\u00e7\u00e3o.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">finally<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">    LAudioStream.Free;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  <\/span><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F286C4\">end<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Projeto_completo_de_demonstracao\"><\/span>Projeto completo de demonstra\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O projeto completo est\u00e1 dispon\u00edvel no GitHub da Code4Delphi: <a href=\"https:\/\/github.com\/Code4Delphi\/DelphiAudio\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Code4Delphi\/DelphiAudio<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nele, voc\u00ea encontrar\u00e1 um exemplo funcional para listar dispositivos, gravar, reproduzir e salvar arquivos MP3.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Video_completo_no_canal_da_Code4Delphi\"><\/span>V\u00eddeo completo no canal da Code4Delphi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tamb\u00e9m publicamos um <a href=\"https:\/\/www.youtube.com\/watch?v=zQzsw8hKdW4&amp;list=PLLHSz4dOnnN2Xlf7OX47cF20gbmz9-9z0\" target=\"_blank\" rel=\"noreferrer noopener\">v\u00eddeo<\/a> mostrando todo o processo na pr\u00e1tica:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Utilit\u00e1rios Delphi #12: Grava\u00e7\u00e3o e reprodu\u00e7\u00e3o de \u00e1udios\" width=\"740\" height=\"416\" src=\"https:\/\/www.youtube.com\/embed\/zQzsw8hKdW4?list=PLLHSz4dOnnN2Xlf7OX47cF20gbmz9-9z0\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Repositorio_oficial_da_biblioteca\"><\/span>Reposit\u00f3rio oficial da biblioteca<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A biblioteca DelphiAudio est\u00e1 dispon\u00edvel gratuitamente no GitHub da TMS Software: <a href=\"https:\/\/github.com\/tmssoftware\/DelphiAudio\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/tmssoftware\/DelphiAudio<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusao\"><\/span>Conclus\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A DelphiAudio permite adicionar grava\u00e7\u00e3o e reprodu\u00e7\u00e3o de \u00e1udio a aplica\u00e7\u00f5es Delphi com pouco c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com ela, podemos listar dispositivos, gravar diretamente em MP3, reproduzir o \u00e1udio da mem\u00f3ria, salvar arquivos e trabalhar com streams para integra\u00e7\u00f5es com bancos de dados, APIs e Intelig\u00eancia Artificial.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Adicionar recursos de \u00e1udio a uma aplica\u00e7\u00e3o Delphi pode ser \u00fatil em diversos tipos de projetos,&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"footnotes":""},"categories":[1,98],"tags":[160,60,161,162],"class_list":["post-1711","post","type-post","status-publish","format-standard","hentry","category-geral","category-tms","tag-audio-no-delphi","tag-delphi","tag-gravacao-delphi","tag-mp3-delphi"],"_links":{"self":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1711"}],"version-history":[{"count":32,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1711\/revisions"}],"predecessor-version":[{"id":1761,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1711\/revisions\/1761"}],"wp:attachment":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}