12

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

データはネットワーク経由で受信され、PCM にデコードされ、基本的にマイクに書き込まれる必要があります。これにより、他のプログラムが読み取り/録音/その他を行うことができます。

私はalsaについて読んでいますが、情報はかなりまばらです. ファイルプラグインは有望なようです-名前付きパイプを「infile」として使用し、アプリケーションからデータを配信できるようにすることを考えていました。ただし、動作させることはできません (vlc/audacity は単に segfault です)。

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

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

4

1 に答える 1

7

あなたの音はネットワークを介して届き、何かが読みたくなるまで何がそれをキャッシュしますか?それともデータは破棄されますか?一般的に、以下のようなもの(ほとんどテストされていない)は仮想マイクとして機能するはずですが、デバイスを開いたときに常に最初からファイルを読み取ると思います。ファイルの終わりをどのように処理するかを確認する必要があります。おそらく、パイプを使用して試してみますが、受信データのキャッシュ/破棄は、ネットワークから読み取るアプリで処理する必要があります。

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

その他のオプションについては、 alsaのドキュメントを参照してください。

繰り返しますが、このツールがタスクに本当に必要なものであるかどうかはわかりません。'file'の場合と同じように、'infile'オプションを使用してコマンドを開始できれば、本当に便利でしたが、残念ながらできません...

お役に立てば幸いです。

更新:slave.pcmは「null」であってはならず、実際のデバイスである必要があります。タイミングに使用されているようですが、nullを使用すると、レコーダープロセスが永久にブロックされます。このデバイスは、特定のサンプルレートで強制的に実行する可能性がありますが、注意が必要です。「デフォルト」の使用は、適切なデフォルト値です。infileは、正しい/一致する形式とレートで生のサウンドデータを提供する必要があります。ところで、あなたはあなたのタスクのための代替ソリューションのためにalsaサーバーとjackdと他のサウンドシステムとライブラリを見ることができます

于 2012-09-28T12:44:47.243 に答える