問題タブ [pulseaudio]

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 投票する
0 に答える
767 参照

c++ - ProjectM-pulseaudio ストリームとオーディオゲイン

Linux でProjectMオーディオ ビジュアライザーを使用しています。私は Ubuntu と Pulseaudio を実行しているので、projectm-pulseaudio バイナリを使用しています。残念ながら、ProjectM での開発は終了したようで、Linux で利用できるようなものは他にありません。

ソースをハッキングして、いくつかの問題を修正することを検討していますが、最初にやりたいことが可能かどうかを感じたいと思っています.C++は非常に錆びており、Pulseaudioとqtの知識はほぼゼロ。

ProjectM は、ユーザーが選択した Pulseaudio 出力デバイス モニターの 1 つをリッスンします。必要なものを選択するための GUI があり、Pulseaudio ボリューム コントロール GUI から同じ選択を行うことができます。私の場合、ビデオ カードの HDMI オーディオ出力、マザーボードのアナログ オーディオ出力、またはマザーボードのデジタル オーディオ出力を選択できます。スピーカーが接続されている場所なので、最後のものを使用しています。

これが大きな問題です。コンピューターから出る途中で、ミックスダウンされたオーディオ ストリームを聞いているのです。音楽ストリームを聞くだけにしたい。つまり、Pulseaudio に送られる特定のオーディオ ストリームです。これにより、いくつかの利点が得られます。

  • システム サウンドおよび他のプログラムからのサウンドは、視覚化の一部ではありません。
  • シンク ボリュームはチェーンの後半にあるため、ProjectM の入力信号の振幅には影響しません。そのため、システム ボリュームを変更しても (起きてスピーカーのボリュームを直接微調整するのではなく)、視覚化には影響しません。

音楽プレーヤーの音量 (Pulseaudio ボリューム コントロール GUI からアクセスできる音楽プレーヤーのストリームに設定された音量と同じ) も視覚化に影響するようですが、これは望ましくありませんが、これが望ましいことです。 ProjectM が聞いているのは、音楽プレーヤーの音量を下げると、シンクに到達するまでに振幅が明らかに低くなるためです。私が本当に望んでいるのは、ボリューム コントロールによってスケールダウンされる前に、ProjectM がフル ボリュームのオーディオ信号を取得できるようにすることです。

最後に、私が replaygain を使用するという点で、もう 1 つのハードルがあります。これは、各アルバムの知覚音量が同等になるように、すべての曲の音量を縮小します。Replaygain はデフォルトで 89dB をターゲットにしているので、ProjectM に入ったら、各サンプルを適切な量だけスケールアップするだけで十分かもしれないと考えています。Pulse はリプレイゲインについて何も知らないので、これがおそらく私ができる最善の方法ですが、他の提案を歓迎します。

したがって、一般的な問題は、これがすべて可能に聞こえるかどうかです。特に:

  1. 出力デバイスのモニターをリッスンするのではなく、特定の他のアプリケーションの Pulseaudio 再生ストリームをアプリケーション (この場合は ProjectM の修正バージョン) で直接モニターすることは可能ですか?
  2. ボリューム コントロールによってスケーリングされる前に、オーディオ ストリームを取得することは可能ですか? (リプレイゲインの目的で音楽プレーヤー アプリケーションが行ったスケーリングを除く)。
  3. そのストリームが破棄されて再作成された場合、そのストリームに再接続することは可能でしょうか?たとえば、毎回認識可能な識別子がまだ残っているかどうかはわかりません。(再生の一時停止と再開、または音楽プレーヤーの再起動のたびにストリームを選択しなければならないのは面倒です。)

最後に、参考になるヒントやリソースを教えていただければ幸いです。または、これを行うスキルがあり、それに取り組むことに興味がある場合は、報奨金を提供できます.

0 投票する
0 に答える
955 参照

python - Cython で「不透明な」構造体宣言の型を指定するにはどうすればよいですか? (PulseAudio の空の構造体 `pa_threaded_mainloop`)

まず、大まかな問題です (質問は一般的な cython の質問だと思いますが)。

I2C バスを介していくつかの LED を制御するためにラズベリー パイを使用しています。オーディオをスヌーピングして楽しい信号処理を行うことでこれらを制御したいのですが、これを行う最も堅牢な方法は PulseAudio を使用することです (たとえば、コールバックを登録することは、ALSA AFAICT ではできないことです)。 . PulseAudio への利用可能な python バインディングは適切なバージョン用ではありません。また、比較的重い信号処理ライブラリ (numpy 配列で動作する) を使用する予定であるため、cython を使用することもできます。

関連性があるかどうかはわかりませんが、Raspbian wheezy には PulseAudio 2.0 が同梱されています。同期システムを使用して PulseAudio とやり取りしている場合、ドキュメントではスレッド化されたメインループを使用することをお勧めします。特に、/usr/include/pulse/pulse/thread-mainloop.h次の宣言が含まれます。

これは、始めるのに妥当な場所のようです。特に、私の理解では、cython は .pyx ファイルで指定された完全な型情報を必要としないということです。その構造体の中身を掘り下げて、単に pulseaudio 関数を操作させるつもりはありません。だから、ここに私のpulse.pyxファイルがあります:

それだけで実際にコンパイルされます。(ここでa を使用する必要があると思いますcdefが、 aでも同じエラーが発生しctypedefます。) の最後にその関数を呼び出すだけの行を追加するとpulse.pyx:

それはうまくいきます。しかし、戻り値で何かをしようとすると、次のようになります。

またはed変数を指定するcdef(または別の行でcdefを実行する):

コンパイル時にエラーが発生します。

次のように少し異なるエラーが発生しcdef pa_threaded_mainloop mainloopます。

では、PulseAudio 2.0 ライブラリについて cython に正しく知らせるにはどうすればよいでしょうか? cython 0.21 を直接インストールしたことに注意してください。標準 C ライブラリの呼び出しなど、より平凡なものは問題なく動作します。

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

audio - pulseaudio にはモジュール dbus プロトコルがありません

DBusを使ってPulseAudioを操作したい。いくつかの手順で、モジュール「module-dbus-protocol」の使用について読みました。しかし、それは存在しません。

オートコンプリート、「pacmd list-modules」、さらにはビルドされた git ソースで探しました。

私の PulseAudio は正しく設定されていますか? または、バージョンに問題がありますか?

現在、pulseaudio 5.0を使用しています

編集:

/usr/lib/pulse/ フォルダーにあります。

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

ffmpeg - Docker コンテナにローカル オーディオを録音する

ffmpeg を使用して docker コンテナー内で Firefox のようなアプリケーションのオーディオを録音するにはどうすればよいですか? pulseaudio をホストnetflixskypeに転送する方法の例を見つけました。

pactl を使用しようとしている場合:

または

エラーが発生します:

これも失敗

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

c - アプリケーション内から仮想サウンド デバイスを登録する

自分のアプリケーション内でアプリケーション (VLC、Rhythmbox など) のオーディオ出力を処理できるようにしたいと考えています。さらに、アプリケーションをサウンドのシンクとして選択できる必要があります (たとえば、VLC または pavucontrol では、アプリケーションが出力デバイスとして表示される必要があります)。

これはどのように可能ですか?ALSAやPulseaudioなどでできますか?現在、私は最も簡単なソリューションを探していますが、後でパフォーマンスの高いソリューションが好まれる可能性があります。ほとんどの構成が API 呼び出しを介して実行できれば素晴らしいことです。

ご支援いただきありがとうございます!

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

qt - QAudioInput が自動的にマスターボリュームを 100% に上げないようにするにはどうすればよいですか?

Qt5 Multimedia を使用して、QAudioInput でオーディオを録音しようとしています。ただし、QAudioInput起動すると、サウンド デバイスのマスター ボリュームが 100% になることに気付きました。

QAudioInput がマスターボリュームを変更しないようにするにはどうすればよいですか?

私の現在の開発プラットフォームは、PulseAudio (フラット オーディオが無効になっている) を備えた Linux です。

これは私が使用している方法ですQAudioInput

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

java - LinuxマシンのオーディオをJavaプログラムに転送する

他のプロセスが生成する音声をリッスンする Java コードを作成する必要があります。周りを見回したところ、PulseAudio を使用する必要があるようです。私が間違っていなければ、Java プロセスとなるシンクを定義し、ソース (alsa?) にそこに行くように指示する必要があります。これを行う方法の詳細を見つけることができませんでした。

そして - Java 側では何を使用すればよいですか? これにより、ミキサーが0になります。

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

bash - Ubuntu 14.04 - スクリプトを使用してシャットダウン時に ogg ファイルを再生するにはどうすればよいですか?

そのため、シャットダウン/再起動時にスクリプトに短い ogg ファイルを再生させようとしていますが、実際に動作させるには何らかの問題があるようです。現在、init.d にスクリプトがあり、rc0.d と rc6.d にシンボリック リンクがあり、手動で実行するとすべて機能するようです。スクリプトとリンクはすべて「K99」で始まります。これは、システムがリストをアルファベット順に処理し、K99 が正しいタイミングで実行する必要があるためです。(K00、K50、および「S」のバリエーションなど、他のスクリプトをいくつか試しましたが、何も変更されていないようです。)

スクリプトはかなり単純だと思います。ogg ファイルとスクリプトの両方のアクセス許可は 755 です。ファイルの長さは約 3 秒なので、それも問題ではないと思います。もともと、スクリプトがまったく動いていないようだったので、sleep コマンドを追加しました。シャットダウンするのに約 3 秒長くかかるように見えるので、スクリプトは実行されていると思いますが、スクリプトがオフになる前に、Ubuntu がおそらくオーディオ デーモン (存在する場合) を強制終了しているように感じますが、わからない。この一見単純なことを理解しようと数日を費やしました。何か案は?

これが些細なことになってしまったら申し訳ありません。私はUbuntuシステムの初心者です。(簡単な修正で大丈夫ですが!:))

更新 それは今あるべきように動作します! 特に起動時にサウンドが複数回再生される理由を調べた後、新興システムについてもう少し学びました。etc/init/ ディレクトリを調べて、起動時にそこにあるスクリプトを実行します。サウンドがまだまったく再生されていないときに、新興スクリプトをそこに置いて実験したことを思い出しました。どうやらそれを削除するのを忘れていたようで、すべての実行レベルで実行されていたため、シャットダウンと起動のインスタンスが二重に発生していました。今はなくなり、すべてが本来あるべき姿になっています。(今は直したのですが、ちょっと音に飽きたので、新しいものを探す必要があるかもしれません(笑))助けてくれてありがとう、みんな。

TL;DR:スクリプトを init.d に置き、シンボリックに etc/rc0.d (再起動時に必要な場合は etc/rc6.d) にリンクします。複数回再生される場合は、おそらく、あるべきではない場所に重複があります。

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

qt - 3.5mm オーディオ ジャックで PulseAudio を使用した Raspberry Pi での Qt5.4 QAudioOutput は機能しませんが、Qt 5.3 では機能します

Qt5.3 はデフォルトの Raspberry Pi also_output.0.analog-mono デバイス (3.5 mm ヘッドフォン ジャック) を認識し、5.3 の QAudioOutput はそのデバイスにオーディオを正常に書き込み、ヘッドフォンでオーディオを聞くことができます。これはすべてデフォルトの Raspbian で動作し、apt-get の PulseAudio 2.0 を使用し、追加の構成は必要ありません。PulseAudio は、システム デーモン モードではなく、セッション プロセスとして実行されます。Qt 5.4 は、まったく同じソース コードと Raspbian (Qt 5.3.2 ではなく Qt 5.4.0 でクロスコンパイルされている場合を除く) を持つデバイスを認識せず、それにデータを書き込むこともできません。

このエラーが表示されます ( sys default:CARD=ALSA と 'default' の両方を手動で割り当てましたが、どちらも同じ 'snd_pcm_hw_params' エラーを返すことに注意してください):

Pactl はそれを見ます:

/etc/pulse/default.pa を変更して、出力デバイスを強制するためにこれを下部に追加しようとしました:

エラーが発生するセットアップコードは次のとおりです。

世界で何が起こっているのですか?なぜ同じ構成が 5.4.1 ではなく 5.3.2 で機能するのでしょうか。デフォルトのオーディオ デバイスの割り当てが機能しません... ここで何ができ、どのように機能させることができますか? ありがとう!