2012-04-17 5 views
4

いくつかの圧縮されていないPCMオーディオデータを取り込み、Ubuntu Linux 12.04のスピーカーから再生するネイティブC/C++コードを書きたいと思います。あなたがインストールされている異なるデフォルトのオーディオAPI /ライブラリは何ですか?低レベルアーキテクチャとは何ですか?また、カーネルとどのように相互作用しますか? (これのsyscalls)Sound API Ubuntu Linux

(私はALSA、PulseAudioは、OSSのような異なる用語を聞いた、というように、私は本当に何とそれらがどのように一緒にフィットしていたの鮮明な画像を持っていません。)

答えて

3

非常に単純な言葉で言えば、ALSAはLinuxのオーディオ用に低レベルのインフラストラクチャを提供し、Pulseはより高い(デスクトップに優しい)レベルを提供します。ほとんどの主流Linuxディストリビューション(Ubuntuも含まれている)に関する限り、OSSは時代遅れです。

あなたはsyscallsについて尋ねます。 Linuxでは、システムコール経由でオーディオを使用しません。 ALSAを直接使用することを選択した場合(簡単なオーディオ再生には適していません)、ユーザスペースライブラリlibasound2を使用します(OSSでもsyscallsではなく/ dev/filesを使用します)。

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

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

0

FMODはあなたにとって最適です。 FMOD Exは、低レベルのAPIとデータの両方を提供しており、C++プロジェクト(ともっと多くの言語)に統合し、Windows、Linux(32ビットと64ビット)、Mac、Android、PS3、駆動API。

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

5

Linuxの場合、LinuxオーディオAPIのLOTSがあります。 Here is a graph I made a few years ago demonstrating the relationships among the various Linux audio APIs.

しかし、Ubuntu LinuxをターゲットにしているだけでC/C++を使用していて、あまりにも派手なことはありません(生のPCMデータを取り出してスピーカーに押し出すだけです)。 「シンプルな」APIに固執しています。 A trivial example can be found here。それは、概念実証を得るための抵抗が最も少ない道です。