問題タブ [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 投票する
3 に答える
4217 参照

python - Python/FFMPEG コマンド ラインの問題

Python スクリプト内から FFMPEG コマンドを実行する際に問題があります。ターミナルから次のコマンドを実行すると、接続された Web カメラ (Logitech C310) からビデオとオーディオをストリーミングし、エラーなしでファイル「out.avi」に出力できます。

以下の Python スクリプトで同じコマンドを実行すると、

それは私にエラーを与えます:

ここで何が起こっているのか、誰かに光を当てることができますか? os.system() と subprocess.call() を使用してみましたが、同じエラーが発生します。ここで何がうまくいかないのか、どこから始めればよいのかわかりません。「video4linux2 Cannot find a appropriate format for codec_id 0, pix_fmt -1」エラーを検索してみましたが、一貫したものは見つかりませんでした。

また、「ffmpeg -f ...」コマンドをシェルスクリプト「test.sh」に入れ、実行権限を与えてみました。次に、ターミナルを開いて「./test.sh」を実行すると、動作します。Python スクリプト内からコマンド「./test.sh」を呼び出そうとすると、以前と同じように元のエラーが残ります。これは、test.sh スクリプトで試した Python コマンドです。

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

c - LinuxのCでマスター音量を取得する

Linuxでマスターサウンドボリュームを取得しようとしています(おそらく後で設定します)。私はPulseAudioを使用していますが、理想的にはALSAでも機能するはずです。

ボリュームの設定方法に関するこの非常に役立つ投稿を見つけました。そこから、snd_mixer_selem_get_playback_volume()の存在を推測して、現在の設定を取得することができました。しかし、私のシステムでは、これは私に間違った読みを与えているようです-ミキサープログラムが100%を示している場合、これは約66%で最高になります。

pavucontrolを開くと、この出力デバイスのボリュームがここから取得した読み取り値と一致していることがわかります。したがって、必要なグローバルマスターボリュームではなく、ハードウェアボリューム設定が提供されていると思います。

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

linux - Linuxで人工マイク入力を作成するにはどうすればよいですか?

私は音声認識プロジェクトに取り組んでいます。

テストのために、私はプログラムを持っていることができるようにしたいと思います:

  • ファイルからオーディオデータをロードする
  • まるでマイクから来たかのように、Linuxカーネルに提供します
  • マイクをサンプリングするユーザースペースプログラムで、ファイルから取得したデータを取得します。

Linuxでは、新しいカーネルモジュールを作成しなくてもそれは可能ですか?

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

c++ - 作成したオーディオデータを再生すると、音にノイズと定期的なクリック音が発生します

ハードウェアから取得したサウンドを再生するアプリケーションを作成します (特定の周波数の正弦波で満たされたリング バッファーなど)。すべて正常に動作し、定期的なクリック音 (おそらくバッファの最後でしょうか?) とノイズを除いて、作成したサウンドを正しく再生できます。

バッファを初期化して実行します。

オーディオバッファのサイズまたはフラグメントを変更すると、クリック期間も変更されます。誰でもこの問題で私を助けることができますか? 最初と最後の値も確認しました。あなたは常に違います。

OS: Ubuntu 11

もっと詳しく。

受信したデータの数は動的であり、変化はさまざまなパラメーターに依存します。しかし、私は常に特定の役割を果たしています。たとえば、128 の値、256、または 512 などです。

// ハードウェアから (Timerloop で) Audiodata を取得します


オーディオバッファサイズも変更しました。大きいサイズに設定すると、クリックにエコーが追加されます。

何か案が ?// - - - - - - - - - - - - 問題は

この関数を呼び出すたびに、クリック音が鳴ります。

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

midi - コントローラーをソフトウェア シンセに接続する方法を教えてください。

私はソフトウェアを構築しました。MIDIコントローラー(キーボードなど)で制御したい。ALSA などを使用して、MIDI ポートからソフトウェアに MIDI データを取得するにはどうすればよいですか? 私はLinuxを使用しています。

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

c++ - ALSA:PCMデバイスを共有モードで開きます

ALSAを使用してPCMデバイスにオーディオデータを再生したい。例として、このサンプル例をダウンロードしてPCで実行しました。現在サウンドカードを使用しているプロセスが他にない場合は、正常に機能します。ただし、他のプロセスがオーディオデバイスを使用している場合(つまり、メディアプレーヤーが曲を再生している場合)は何も再生されず、次のエラーが表示されます-

この例のソースコードを見ると、882行目のsnd_pcm_open関数がこのエラーをスローしていると言えます。別のプロセスが現在デバイスを使用しているため、デバイスがビジーであることが検出されます。

また、逆の方法を試しました。最初に例を開始してから、曲を開始しようとしました。この場合、メディアプレーヤーはアイドル状態のままで、プログレスバーのすぐ横に「アイドル」と表示されます(私はBansheeを使用しています)。私はsnd_pcm_open、他のプロセスがそれを使用できないように、デバイスリソースの排他的権利を取得すると想定しています。

しかし、私はそれを望んでいません。PC内の他のプロセスがオーディオデータを出力するために同じデバイスを共有できるように、排他的権利を必要とせずにオーディオデバイスでサウンドを再生したいと思います。

どうやってやるの?他のプロセスも同じデバイスを共有できるように、PCMデバイスを開くにはどうすればよいですか?

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

c - 複数のプロセス間でデバイスを共有できるようにするALSA構成

.asoundrcホームディレクトリのファイルに次のコードがあります-

このサンプル例を実行すると、正常に動作します(デバイス名をに変更しましたplug:lol)。ヘッドホンで音が鳴ります。この問題は、2つ以上のプロセスが同時にオーディオデータを出力しようとしたときに発生します。この場合、後のプロセスではオーディオデータを正しく出力できません。

たとえば、曲を再生しているメディアプレーヤーを実行してから、その例を実行してみました。音が聞こえず、メディアプレーヤーで再生されている音楽しか聞こえませんでした。この例を最初に実行してからメディアプレーヤーを実行すると、同様のことが起こります。この場合、例からのオーディオ出力のみを聞きます。

どうすればこの問題を解決できますか?pcmデバイスの構成にエラーはありますか?または、サンプルコードで追加のPCM構成パラメーターを提供する必要がありますか?

また、このような構成ファイルを使用するのではなく、プログラムでこの論理デバイス構成を作成できれば、本当に良かったでしょう。

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

c++ - C ++を使用してUbuntuでALSAサーバー(この場合はTimidity)に接続するにはどうすればよいですか?

LinuxUbuntuでC++を使用してMIDIを使用しようとしています。いくつかのツール(JACKなど)を使用して成功しなかった(JACKは私のマシンで狂ったように遅れる)1日後、私は現在、MIDIサーバーとしてTimidityを使用しようとしています。ただし、C++を使用してプログラムでTimidityに接続する方法に関するリファレンスをWeb上で見つけることができません。とにかくこれを行うことはありますか?

提案をありがとう!

ノート:

私は次のようにグーグルを検索しようとしました:

alsaサーバー接続

臆病接続プログラム

しかし、答えはありません。

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

c - オーディオ パケット タイプ

C (C++ ではない) で記述され、Fedora 15 で実行されているイーサネット経由で G.711 オーディオを送信するプロジェクトに取り組み始めています。スマートなことをして RTP を使用するのではなく、UDP を使用してオーディオデータを転送しています。パケットの並べ替えの問題をある程度克服するために、各パケットの本体で次のような構造体を使用することにしました。

変数 "cc" は 0 ~ 15 で実行される継続カウンターで、パケットが受信者に到着すると、cc の値に基づいてこれらの構造体の配列に入れられます。オーディオ出力ルーチンは、この配列をループしてデータを再生します。

私の質問は、これがオーディオをパッケージ化する最良の方法ですか? 出力配列は最終的に2次元になり、各メンバーの読み取りと出力への書き込みが遅くなりますか? 反対側のオーディオ インターフェイスに書き込むことができる 160 バイト幅の型を定義する方法はありますか?

ALSA に関する役立つリソースへのリンクと同様に、任意の提案をいただければ幸いです (これは非常にまれなようです!)。

ジョシュ