terça-feira, 22 de janeiro de 2013

Gravando áudio

Gravando para um buffer de som. O áudio capturado deve ser gravado em um buffer (sf::SoundBuffer), para que então possa ser tocado ou gravado em um arquivo.

// primeiro checar se um dispositivo de áudio está disponível
if (!SoundBufferRecorder::isAvailable())
{
}

// criar o gravador
SoundBufferRecorder recorder;

// começar a capturar
recorder.start();

// parar de capturar
recorder.stop();

// recuperar o buffer
const sf::SoundBuffer& buffer = recorder.getBuffer();

A captura ocorre em sua própria thread, o que significa que você pode fazer o que quiser entre o inicio e o fim dela, sem que seja interrompida.
  • Salvar em um arquivo
    buffer.saveToFile("my_record.ogg");
    
  • Tocar
    sf::Sound sound(buffer);
    sound.play();
    
  • Outros
    const sf::Int16* samples = buffer.getSamples();
    std::size_t count = buffer.getSampleCount();
    doSomething(samples, count);
Há também 2 funções adicionaisonStart e onStop. Estas são chamadas quando a captura começa/termina.
Você também pode criar o seu próprio gravador:
class MyRecorder : public sf::SoundRecorder
{
    virtual bool onStart()
    {
        return true;
    }

    virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount)
    {
        return true;
    }

    virtual void onStop()
    {
    }
}
if (!MyRecorder::isAvailable())
{
}

MyRecorder recorder;
recorder.start();
recorder.stop();

Nenhum comentário:

Postar um comentário