LoginSignup
0
0

More than 3 years have passed since last update.

C++ と irrKlang を使って オーディオファイルを再生する

Posted at

C/C++ にて オーディオファイルを再生する 
の続きです。

前回は、OpenAL を使う方法に紹介した。
今回は、irrKlang を使う方法に紹介する。
セットアップに手間がかかったので記録しておく。

irrKlang

オーディオファイルを再生するライブラリです。
https://www.ambiera.com/irrklang/

クロスプラットフォーム(Windows、MacOS、Linux )です。

wav、ogg、mp3、flac、mod、xm、s3m などのファイル形式に対応している。

ライセンス
非商用製品では無料でirrKlang を使用できる。
商用製品では、irrKlang proライセンスを購入する必要がある。

irrKlang のセットアップ

irrKlang はプラットフォーム毎にビルドされたライブラリで配布されている。

パッケージ管理ツールでインストールできない。
かなり手間がかかる。

(1)下記からダウンロードする
https://www.ambiera.com/irrklang/downloads.html

(2) 解凍する
下記のようなディレクトリとファイルの構成に展開される。
bin ディレクトリにプラットフォーム毎にビルドされたライブラリがある。

doc
examples
examples.net
include
lib
media
plugins
readme.txt
changes.txt
bin
dotnet-4-64

linux-gcc-64

winx64-visualStudio
libirrklang.dylib
ikpMP3.dylib
ikpFLAC.dylib

(3) 必要なファイルをシステム領域にコピーする。
(3-1) システム領域にディレクトリを作成する

mkdir /usr/local/opt/irrklang
mkdir /usr/local/opt/irrklang/include
mkdir /usr/local/opt/irrklang/lib

(3-2)ヘッダーファイルとライブラリイファイルをコピーする

cp include/* /usr/local/opt/irrklang/includ/
cp bin/macosx-gcc/*.dylib /usr/local/opt/irrklang/lib

下記のように g++ のコマンドオプションを指定してビルドする。

g++ sample.cpp -I/usr/local/opt/irrklang/include -L/usr/local/opt/irrklang/lib -lirrklang

(5) 実行環境を整備する
以降は主に MAC の場合

(5-1) シンボリックリンクを作成する。

実行すると、下記のエラーになる。

dyld: Library not loaded: /usr/local/lib/libirrklang.dylib

シンボリックリンクを作成する。

ln -s /usr/local/opt/irrklang/lib/libirrklang.dylib /usr/local/lib/libirrklang.dylib

(5-2) ライブラリの使用を許可する

実行すると、下記のワーニングが表示される。

/usr/local/lib/libirrklang.dylib: code signature in (/usr/local/lib/libirrklang.dylib) not valid for use in process using Library Validation: library load disallowed by system policy

「開発元を検証できないため開けません」
screenshot_libirrlang_warning.png

参考 apple developer
Notarizing macOS Software Before Distribution

対応策
署名のないライブラリは、
手動で使用を許可する

システム環境設定のセキュリティとプラバシーから
screenshot_libirrlang_security_setting.png

再度実行すると、確認ダイアログが表示される
screenshot_libirrlang_confirm.png

参考
macOS 10.15 Catalinaにおける「開発元を検証できないため開けません」

(4)pkg-config を使えるようにする

(4-1) 設定ファイルをコピーする

mkdir /usr/local/opt/irrklang/pkgconfig
cp pkgconfig/irrklang.pc /usr/local/opt/irrklang/pkgconfig

(4-2) PKG_CONFIG_PATH を設定する

export PKG_CONFIG_PATH=/usr/local/opt/irrklang/pkgconfig

(4-2) 動作確認する

pkg-config --cflags --libs irrklang
-I/usr/local/opt/irrklang/include -L/usr/local/opt/irrklang/lib -lirrklang

以上で、下記のようにビルドできる。

g++ sample.cpp pkg-config --cflags --libs irrklang

参考
pkg-configを使ってg++でコンパイルできるようになるまで

irrKlang の使用方法

irrKlang Tutorials

zip ファイルの examples に下記のサンプルがある。

01.HelloWorld
04.OverrideFileAccess
02.3DSound
03.MemoryPlayback
04.OverrideFileAccess

05.Effects
06.Recording

01.HelloWorld を 参考にMAC で動くように修正したコードはこちらに。
https://github.com/ohwada/MAC_cpp_Samples/blob/master/irrKlang/play_file.cpp

mp3 を再生する

libirrklang.dylib は、
wav、ogg、mod、xm、s3m などの形式に対応している。

mp3 のときは、実行ファイルと同じディレクトリに ikpMP3.dylib を配置する。

参考
Cannot play mp3 File

実行すると、ワーニングが表示されるので、
手動で使用を許可する。

screenshot_ikpmp3_warning.png

screenshot_ikpmp3_security_setting.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0