5

圧縮されていないPCMオーディオデータを取得し、UbuntuLinux12.04のスピーカーから再生するネイティブC/C++コードを記述したいと思います。インストールされているさまざまなデフォルトのオーディオAPI/ライブラリを教えてください。それらの低レベルのアーキテクチャとは何ですか?また、カーネルとどのように相互作用しますか?(これはシステムコールです)

(ALSA、PulseAudio、OSSなどのさまざまな用語を聞いたことがありますが、どの用語がどのように組み合わされているのか、はっきりとはわかりません。)

4

3 に答える 3

5

Linuxでは、たくさんのLinuxオーディオAPIから選択できます。これは、数年前に作成したさまざまなLinuxオーディオAPI間の関係を示すグラフです。

ただし、UbuntuLinuxのみをターゲットにしてC/ C ++を使用していて、それほど凝ったものは必要ない場合(生のPCMデータを取得してスピーカーに表示するだけ)、PulseAudioを使用して「シンプル」に固執することをお勧めします。 「API。簡単な例はここにあります。これは、概念実証が機能することへの抵抗が最も少ないパスです。

于 2012-04-17T07:04:18.273 に答える
4

非常に簡単に言えば、ALSAはLinuxのオーディオに低レベルのインフラストラクチャを提供し、Pulseはより高い(よりデスクトップに適した)レベルを提供します。ほとんどの主流のLinuxディストリビューション(Ubuntuを含む)に関する限り、OSSは廃止されています。

あなたはシステムコールについて尋ねます。Linuxではsyscallを介してオーディオを使用しません。ALSAを直接使用することを選択した場合(単純なオーディオ再生には適していません)、そのユーザースペースライブラリlibasound2を使用します(OSSでさえsyscallではなく/ dev /ファイルを介して使用されます)。

最新のLinuxディストリビューションのみを対象としている場合は、PulseAPIの使用を検討してください。ターゲットとするディストリビューションとクロスプラットフォームサポートの可能性についてより柔軟性が必要な場合は、OS固有のオーディオAPIを抽象化したライブラリ(PortAudio(http://www.portaudio.com)など)を試すことができます。 /)。

オーディオ開発を行ったことがない場合は、PulseAudioを直接アドレス指定するよりも、PortAudioなどのライブラリを使用する方が簡単な場合があります。

于 2012-04-17T04:38:04.087 に答える
0

FMODはあなたにとって素晴らしいはずです。C ++プロジェクト(およびその他の多くの言語)に統合するのはかなり簡単で、Windows、Linux(32ビットおよび64ビット)、Mac、Android、PS3、Xboxなどで実行されます。また、FMODExは低レベルのAPIとデータの両方を提供します-駆動型API。

アプリケーションでお金を稼ぐ予定がない場合は、無料で使用できます。それ以外の場合は、約100ドルからのライセンスの支払いが必要になる場合があります。

于 2012-04-17T04:30:53.553 に答える