2

YouTube の動画を再生し、Firefox のオーディオをプログラムで特定のサウンド カードに出力したいと考えています。

firefox | aplay -D hw:x,y. 私はYieldsのようなことをすると思います:

生データの再生 'stdin' : 符号なし 8 ビット、レート 8000 Hz、モノ aplay: set_params:1059: サンプル形式は利用できません

しようとしているfirefox | aplay -D hw:1,0 -f S16_LE -c 2

生データの再生 'stdin' : 符号付き 16 ビット リトル エンディアン、レート 8000 Hz、ステレオ 警告: レートが正確ではありません (要求 = 8000 Hz、取得 = 44100 Hz) プラグ プラグインを試してください

ついに、firefox | aplay -D plughw:1,0 -f S16_LE -c 2

生データの再生 'stdin' : 符号付き 16 ビット リトル エンディアン、レート 8000 Hz、ステレオ

コマンドラインはそれが機能したことを示していますが、オーディオは hw:0,0 (デフォルト) から出てきました。

独自のプラグインを作成する必要がありますか? それとも、alsa に 44100Hz を強制する必要がありますか?

また、メモリ リークのバグにより頻繁にクラッシュするため、pulse の使用を拒否します。

4

2 に答える 2

6

フラッシュは常にデフォルトのサウンドカードを使用していると確信しているので、変更する必要がありますpcm.default。次のようなものを編集~/.asoundrcして追加することで、これを行うことができます。

pcm.!default {
    type hw
    card 0
    device 2
}

もちろん、これはすべてのアプリに影響しますが、ALSA_CONFIG_PATH(環境内で)別のファイルを指定するように設定することもできるので、Firefoxだけでそれを行うことができると思います。

ALSA FAQは、同様に機能する可能性のある環境変数があることALSA_PCM_CARDを示しています。ALSA_CARD

これらの変数は、デフォルトの構成の一部であるため、実際に機能します/usr/share/alsa/alsa.conf

    @args.CARD {
            type string
            default {
                    @func getenv
                    vars [
                            ALSA_PCM_CARD
                            ALSA_CARD
                    ]
                    default {
                            @func refer
                            name defaults.pcm.card
                    }
            }
    }

したがって、これを実行できるはずです。

ALSA_PCM_CARD=1 ALSA_PCM_DEVICE=3 firefox

システムの適切なカードとデバイス番号を使用します。またはもちろん、独自の環境変数(または他の条件付きチェック)をALSA構成に追加することもできます。

于 2012-01-20T18:14:43.973 に答える