問題タブ [alsa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3368 参照

c - ALSA: PCM オンザフライの開閉

次のことを行うプログラムがあります。

  1. snd_pcm_open()関数でデフォルトの PCM を開きます
  2. サンプルを送信してサウンドを再生します
  3. snd_pcm_close()関数で PCM を閉じます

プログラムは受信したサウンド要求を定期的に再生しますが、オープンに失敗して「デバイスまたはリソースがビジー状態です」というエラーを返すことがあります。これは通常、多くのサウンド ファイルがある場合に発生します。ただし、ヒヤリハットは必ず成功します。クローズが成功した場合、PCM はすぐに他のユーザーが使用できるようになると思います。また、サウンドを使用するシステムには他に何もないことも付け加えておきます。

閉鎖後に ALSA がまだいくつかのリソースをクリーンアップする必要がある可能性はありますか? PCM インターフェイスは頻繁に開いたり閉じたりするように設計されていませんか? インターネット上のほとんどの例では、起動時に PCM ストリームを開き、シャットダウン時に閉じます。

0 投票する
1 に答える
1010 参照

ruby - ruby-alsa の使用

最終的にruby​​-alsa ライブラリを参照するコードを取得しましたが、また行き詰まりました。最終的には、クライアント側からアクションが呼び出されたときに、サーバーでオーディオ ファイルを再生したいと考えています。そのため、コントローラーに次のコードがあります。

ALSA ライブラリの RDoc を読むと、ALSA::PCM::Playback クラスのwrite_in_background メソッドを使用する必要があるという印象を受けます。残念ながら、このメソッドを機能させるための正しい構文を取得できません。ALSA が適切に機能していることを簡単に確認するために、Playback.write メソッドを使用してみました (上記のコードに注意してください)。上記のコードは構文的に正しいです。ただし、1 マイクロ秒だけサウンドを再生してから停止します。私の推測では、リクエストがすぐに終了するため、認識できるものを再生する時間が十分にありません。

前述のように、私の最終的な目標は、サーバーでオーディオを再生するアクションをエンド ユーザーに呼び出させることです。ファイルは、HTTP 要求の最後で再生を停止するべきではありません。再生を停止する別のアクションが呼び出されるまで続行する必要があります。それを知っているので、誰かが write_in_background メソッドを呼び出すための構文とパラメーターを正しく取得するのを手伝ってくれませんか? 残念ながら、現時点で私が持っているruby ​​-alsa のドキュメントは、(Ruby の完全な初心者として) 私にとって十分に役に立ちませんでした。

更新:上記の書き込みメソッドの呼び出しを write_to_background メソッドの呼び出しに置き換えると、次のランタイム エラーが発生します: pcm ハンドラを追加できません (関数が実装されていません)

更新 2:別の WAV ファイルと次のコードでこれを試したところ、ワープ速度で再生されました。

ここで起こっていることの組み合わせがあるようです。1 つ目は、サンプル レート (長さ == 44100、CD の品質) に関するものだと思います。オーディオ ファイルを別のレートで再生する方法を調べる必要があります。ただし、それを超えて、バックグラウンドで再生する方法にまだこだわっています。スリープは ALSA が機能していることを証明していますが、実際のシナリオではうまく機能しません。

更新 3:一時的にマジック ナンバーに依存しているにもかかわらず、サンプル レート ビットが機能するようになりました。

この時点で、ルビー コードで ALSA を介してオーディオを再生していますが、スリープを必要とせずにバックグラウンドで継続的に再生する方法がわかりません。

0 投票する
1 に答える
5920 参照

linux - マイクのシミュレート (仮想マイク)

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

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

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

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

0 投票する
1 に答える
12617 参照

python - JACK を使おうとしている PyAudio

Python 2.6.6 で PyAudio を実行していますが、JACK ではなく ALSA を使用したいと考えています。

0 投票する
2 に答える
913 参照

android - Androidエミュレーター内でalsaを使用してアプリケーションを実行できますか?

Androidエミュレーターで実行するために独自の画像を作成しています。この画像の中に、サウンドにalsaを使用したいアプリケーションがあります。これはAndroidエミュレーターで可能ですか?

adb pushを使用して、aplayを送信します。そして、aplay -lを使用すると、使用可能なサウンドデバイスがないというメッセージが表示されます。

どうすればこれができるのでしょうか?

0 投票する
4 に答える
2243 参照

python - Windows Gstreamer ALSA代替?

gstreamerを使用してWindowsで使用できるALSAの代替手段、インストール方法、必要に応じてPythonバインディングを見つける場所を知っている人はいますか?ありがとうxxx

0 投票する
1 に答える
642 参照

linux - マルチスレッドゲームプログラムが突然glXSwapBuffersにロックアップする

私が書いたLinuxゲームプログラムを磨き上げています。約10分間プレイした後、30秒ごとに1フレームに急に遅くなり、システム全体も遅くなります。プロセスを中断した後でも、システムは約1分間低速のままです。

複数のテストで、速度低下が発生したときにGDBのプロセスを中断しましたが、それは常にへの呼び出しの途中ですglXSwapBuffers

ゲームの状態や入力に関係なく発生します。それを防ぐ唯一のことは、別のスレッドで繰り返し音楽トラックの再生を開始しないことです。スレッドは引き続き実行されますが、サウンドカードバッファに常に書き込まれるわけではありません。2つの共有リストが適切にロックされていることを確認しました。

誰かがglXSwapBuffers他の、一見無関係に見えるスレッドで問題に遭遇しましたか?

OSはUbuntu9で、OpenGLのMesa7.6.0実装とALSAlibasound21.0.20-3を使用しています。今朝、GeForce 6800グラフィックカード用のNVIDIAドライバーを更新しましたが、役に立ちませんでした。

(関連?)コードは次のとおりです。

表示機能:

再生スレッド機能:

0 投票する
5 に答える
12950 参照

android - Android AudioRecord - 2 回目は初期化されません

Hej、現在 AudioRecord を動作させようとしています。より大きなプロジェクトで必要だからです。でもめちゃくちゃ混むらしい。私は多くのことを試してきたので、このバグを追跡したときに基本に戻りました. Samsung Galaxy S をデバッグデバイスとして使用しています。

私の問題は、デバイスの再起動後に初めて、作成した AudioRecord オブジェクトを問題なく初期化できることです。しかし、2 回目に実行すると、AudioRecord オブジェクトが初期化されません。私はいくつかの周波数を試しました。

これが私のコードです:

logcat情報を数時間調べた後、このイベントを見つけました

「AudioRecordのネイティブホールドを解放するようです。だから、Audiorecord object.release()でファイナライズのオーバーライドを試みました。しかし、これはうまくいきませんでした..誰かに何か考えがありますか?

0 投票する
4 に答える
10737 参照

c - ALSA: 全二重 C の例?

C での全二重 ALSA 接続の例はありますか? サポートされていることを読みましたが、私が見たすべての紹介例はサウンド サンプルの録音または再生のいずれかでしたが、VoIP アプリで両方を実行できる 1 つのハンドラーが必要です。

助けてくれてありがとう、イェンス

0 投票する
1 に答える
1699 参照

android - AudioHardwareALSA::getInputBufferSize(...) でのバッファ計算

AudioHardwareALSA.cpp の getInputBufferSize(...) 関数を見ていると、ハードコードされた 320 の値が返されます。私の質問は次のとおりです:この値はどのように計算されますか?

私はいくつかの事前校正を行いましたが、まだいくつか質問があります。

コード内に period_time が見つからないので、質問の 1 つは、それはどこで定義されているのか、それとも大まかな計算なのかということです。

また、16000 と 32000 などのサンプル レートを追加しようとしています (後で追加する可能性があります)。正しい最小バッファサイズを計算するには? 遅延はすべてのサンプル レートで常に 10 ミリ秒ですか?

どんな助けでも大歓迎です。