2011-01-02 8 views
11

マイク出力を「シミュレート」する必要があるという問題があります。マイクをシミュレートする(バーチャルマイク)

データはネットワーク経由でPCMにデコードされ、基本的にマイクに書き込まれる必要があります。マイクに書き込む必要があります。

私はalsaで読んできましたが、情報はかなり疎です。ファイルプラグインは有望に思えます - 名前付きパイプを "infile"として持っていて、私のアプリケーションからデータを渡すことができると考えていました。しかし、私はそれを動作させることはできません(vlc/audacity just segfault)。

pcm.testing { 
    type file 
    slave { 
    pcm { 
     type hw 
     card 0 
     device 0 
    } 
    } 
    infile "/dev/urandom" 
    format "raw" 
} 

これを実行する方法はありますか? alsaプラグインに関する提案(特にファイルプラグイン)?

答えて

7

あなたのサウンドはネットワーク上に来るでしょう。何かを読んでみたいと思うようになるまで、それはキャッシュされますか?または、データは破棄されますか? 一般的には、以下のようなもの(ほとんどテストされていない)は仮想マイクとして動作するはずですが、デバイスを開いたときにファイルの先頭からファイルを読み込み、ファイルの終わりをどのように処理するかを確認する必要があります。おそらく、あなたがパイプを使って試してみたが、入ってくるデータをキャッシング/破棄することは、ネットワークから読み取るアプリケーションによって処理される必要があります。

pcm.virtmic { 
    type file 
    format "raw" 
    slave.pcm "default" 
    file '/dev/null' 
    infile '/dev/urandom' 
} 

詳細はalsa docsを参照してください。

また、このツールが本当にタスクに必要なものかどうかはわかりません。あなたが 'file'でできるように 'infile'オプションでコマンドを起動できるのであれば、本当にうれしかったでしょう...

希望に役立ちます。

UPDATE:slave.pcmは「null」ではなく、実際のデバイスである必要があります。それはタイミングのために使用されるか、わかりませんが、nullを使用するとレコーダープロセスが永久にブロックされます。このデバイスは特定のサンプルレートで強制的に動作する可能性がありますので注意してください。 「デフォルト」を使用するのは正常なデフォルト値です。 infileは生のサウンドデータに正しい/一致するフォーマットとレートを提供する必要があります。 btwあなたはあなたの仕事のための代替ソリューションのためのalsaサーバとjackdと他のサウンドシステムとライブラリを見ることができます

関連する問題