microfone virtual: Arquivo - Microfone - Aplicativo

1

Preciso depurar meu programa e preciso de algo como um virtual microfone. Eu gostaria de dispositivo "microfone" onde eu posso colocar o arquivo de som e este arquivo será inserido para o stream de microfone. E na aplicação eu recebo isso fluxo deste "microfone"

Arquivo - > Microfone - > Aplicativo

é possível?

algo como o comando bash deve ser muito útil:

aplay --device=mic my_microphone.wav para executar um fluxo de microfone

    
por user67449 13.02.2011 / 16:50

2 respostas

0

Sua pergunta carece de alguns detalhes, como qual linguagem de programação ou qual servidor de som você está usando. Ainda assim, vou tentar.

Eu usei com sucesso o daemon JACK ( jackd ) para depurar um aplicativo de áudio. Pode ser um pouco trabalhoso fazer com que jackd funcione, mas vale a pena. Pense nisso como um servidor de som que aplicativos de áudio e hardware podem registrar portas de entrada e saída de áudio com. Então você pode usar qjackctl para conectar essas portas, manualmente usando Conectar ou automaticamente usando o Patchbay .

Os passos a seguir:

  • instale jackd e qjackctl
  • supondo que você esteja usando o ALSA, adicione um dispositivo jack ao seu ~/.asoundrc para poder enviar para o servidor do conector (veja abaixo)
  • inicie qjackctl e, de dentro, inicie jackd (pode ser o momento em que você se deparar com problemas - na minha configuração de áudio bastante complexa, tive de remover pulseaudio do caminho)
  • reproduza seu arquivo de som usando aplay --device=jack my_microphone.wav e tente conectá-lo à sua placa de som - quando você ouvir algo, estará quase pronto
  • crie uma nova porta de entrada JACK usando a API JACK
  • use o Patchbay de jackd para conectar automaticamente sua nova porta de entrada a uma porta de saída de áudio JACK (que pode ser a saída de aplay , um reprodutor de mídia usando JACK (qmmp, VLC e outros) ou sua placa de som)

Aqui está a parte relevante do meu ~/.asoundrc

pcm.jack
{
        type plug
        slave.pcm "jack_output"
        hint
        {
                show on
                description "Alsa (JACK plugin)"
        }
}

pcm.jack_output
{
        type jack
        playback_ports
        {
                0 system:playback_1
                1 system:playback_2
        }
        capture_ports
        {
                0 system:capture_1
                1 system:capture_2
        }
        hint
        {
                show off
                description "Alsa (JACK output)"
        }
}
    
por 06.09.2011 / 13:12
0

Você também pode incorporar o GStreamer em seu aplicativo. Veja aqui para uma breve introdução e aqui para um tutorial. O elemento appsink pode ser exatamente o que você está procurando.

Aqui estão alguns exemplos de linha de comando. Há também uma API extensa para que você possa chamar todo (ou parte) disso do seu aplicativo.

Reproduza o ruído rosa em sua saída de áudio padrão:

gst-launch-0.10 audiotestsrc wave=6 ! autoaudiosink

Reproduza um MP3 (ou outro formato compatível) na sua saída de áudio padrão:

gst-launch-0.10 filesrc location=my_microphone.mp3 ! decodebin ! \
  audioconvert ! autoaudiosink

O GStreamer é brilhante, então por favor não me culpe caso você comece a reescrever todo o seu aplicativo usando o GStreamer ...:)

    
por 06.09.2011 / 13:34