GARANTIR DESCONTO

Fórum Gravar um áudio em mp3 usando Bass #215448

19/02/2004

0

Algum amigo teria um exemplo para gravar um som direto em mp3 ou wma usando Bass?


Pleonardomv

Pleonardomv

Responder

Posts

19/02/2004

Cebikyn

No site da BASS (www.un4seen.com), procure por BASSenc e baixe, nele vc encontra um exemplo de como fazer isso. Tb é necessário o programa Lame.exe (não tenho link para ele), que vai receber o áudio capturado pela BASS e converter em MP3 automaticamente.


Responder

Gostei + 0

19/02/2004

Pleonardomv

Baixei os dois mas como funciona? Vc poderia me explicar?


Responder

Gostei + 0

20/02/2004

Cebikyn

Funciona assim:

Primeiro o programa inicia a BASS:

if (not BASS_RecordInit(0)) or (not BASS_Init(1,44100,0, win, Nil)) then begin
  ShowMessage(´Não foi possível iniciar o dispositivo´);
  Close();
end

Depois inicia o dispositivo de gravação:

rchan:=BASS_RecordStart(44100, BASS_RECORD_PAUSE, nil,0);

Em seguida inicia o encoder (que grava p/ MP3 a partir do áudio passado pela BASS.dll):

if (not BASS_Encode_Start(rchan,´lame.exe --alt-preset standard - arquivo.mp3´,0, Nil,0)) then
begin
  BASS_ChannelStop(rchan);
  Exit;
end;

E inicia a gravação:

BASS_ChannelResume(rchan);

E qnd terminar a gravação desejada, chama-se estas funções:

  BASS_Encode_Stop(rchan);
  BASS_ChannelStop(rchan);


[b:70b06b48e7]rchan[/b:70b06b48e7] é uma variável do tipo DWORD. Para que o prgrama funcione, é necessário declarar BASS e BASSenc no Uses e tb colocar as dlls BASS.dll e BASSenc.dll na pasta do programa (juntamente com LAME.exe). Para determinar de qual dispositivo será feita a gravação (microfone, line in/out, etc...), use:

BASS_RecordSetInput(input,BASS_INPUT_ON);

Em que input é o número do dispositivo (0 é o primeiro).


Responder

Gostei + 0

20/02/2004

Pleonardomv

Puxa cara vc é bom mesmo em BASS. Funcionou legal com algumas alterações mas a aplicação fica muito lenta. Teria como resolver isso? VC clica em um botão e ele demora executar a ação.
Valeu....


Responder

Gostei + 0

20/02/2004

Cebikyn

Não existe nenhuma forma de aumentar a velocidade, que eu saiba...


Responder

Gostei + 0

20/02/2004

Pleonardomv

Desculpa te incomodar mas vc sabe como definir uma placa de som? Tenho 2 na máquina e gostaria de selecionar uma delas...


Responder

Gostei + 0

20/02/2004

Cebikyn

Vou te dar os dois códigos que eu tenho para seleção de dispositivos (para selecionar dispositivo de entrada e saída) e vc vê se as duas placas aparecem em um deles:

[b:c8af2a90b4]Para selecionar dispositivo de entrada:[/b:c8af2a90b4]

Adiciona os dispositivos ao ComboBox:

var
  c: Integer;
  i: PChar;
begin
  c:=0;
  i:=BASS_RecordGetInputName(c);

  while i<>nil do begin
    ComboBox1.Items.Add(StrPas(i));
    if (BASS_RecordGetInput(c) and BASS_INPUT_OFF)=0 then begin
      input:=c;
      ComboBox1.ItemIndex := c;
    end;
    inc(c);
    i:=BASS_RecordGetInputName(c);
  end;
end;

No OnClick do ComboBox (antes de iniciar a gravação):

var
  i:Integer;
begin
  Input := ComboBox1.ItemIndex;
  
  i:=0;
  while BASS_RecordSetInput(i,BASS_INPUT_OFF) do
    Inc(i);

  BASS_RecordSetInput(input,BASS_INPUT_ON);
end;


[b:c8af2a90b4]Para selecionar dispositivos de saída:[/b:c8af2a90b4]

Adiciona os dispositivos ao ComboBox:
var
  x: Integer;
begin
  x := 0;
  while (BASS_GetDeviceDescription(x) <> nil ) do begin
    cmbAuDispositivos.Items.Add(BASS_GetDeviceDescription(x));
    Inc(x);
  end;
  ComboBox2.ItemIndex := 1;
begin


Depois basta passar o ItemIndex do ComboBox como primeiro parâmetro do BASS_Init.


Responder

Gostei + 0

01/12/2010

Marcos Silva

Colega cebikyn ve esse tópico é tenho uma dúvida. usando os procidimentos citados acima, como posso pausar a gravação feia com a bass é depois contuinuar, hoje não consigo fazer isso gravo sem parar pode me ajudar.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar