iPhoneアプリ開発のためのサウンドフォーマットまとめ
iPhoneのゲームを作成することになったため、音声ファイル再生の方法を調べたのですが、数多くのフォーマットがあり、どの形式で利用するのがいいか迷ってしまいました。
そこで、各フォーマットとその特徴をメモっておこうと思います。
なお、下記の表は AppleのiOS Developer Libraryから引用したものです。
音声のデコード方式について
音を鳴らすのに、ハードウエアデコードを使うか、ソフトウエアデコードを使うかは同時に鳴らせる音声ファイルの数に影響します。
同時に再生されている各サウンドはひとつの「チャンネル」を使用しますが、ハードウエアチャンネルは一つしかないため、AACまたはMP3がハードウエアチャンネルで再生されている場合は、その他のファイルの音声を同時に鳴らそうとすると、ソフトウエアデコードされることになります。(つまり、ソフトウエアデコードできなかったiOS3.0以前は一緒に再生できない。)
そのため、複数の音声ファイルを、良いパフォーマンスで再生するには、linear PCM (非圧縮形式) かIMA4 (圧縮形式)を使うのが望ましいとこのとでした。
オーディオフォーマット | ハードウエアデコード | ソフトウエアデコード |
AAC (MPEG-4 Advanced Audio Coding) | ○ | iOS 3.0から○ |
ALAC (Apple Lossless) | ○ | iOS 3.0から○ |
HE-AAC (MPEG-4 High Efficiency AAC) | ○ | |
iLBC (internet Low Bitrate Codec, another format for speech) | ○ | |
IMA4 (IMA/ADPCM) | ○ | |
Linear PCM (uncompressed, linear pulse-code modulation) | ○ | |
MP3 (MPEG-1 audio layer 3) | ○ | iOS 3.0から○ |
µ-law and a-law | ○ |
Multimedia Programming Guide: Using Audio.より引用
ちなみに、AAC,MP3は高音質のサウンドに、linear PCM,IMA4は比較的小さなサウンドに利用されることが多いようです。
音声のファイルフォーマットについて
さて、コーデックの特徴がわかったところで、ファイルフォーマットについてもメモしておこうと思います。どれも3文字の拡張子なので、どっちがどっちかわからなくなってきてしまうんですよね。
ファイルフォーマットは以下の3つのどれかが使われることが多いです。
*.aif (*.aiff)・・・Appleが開発した音楽ファイル形式。基本的に非圧縮。
*.wav ・・・Microsoftが開発した音楽ファイル形式。基本的に非圧縮。
*.caf・・・コア・オーディオ・ファイルという、AppleがiOS / Mac OS用に拡張した音楽ファイル形式。フォーマットというよりはコンテナに近いらしい。コンテナに圧縮してまとめてある。そのため、上記2つに比較して、ファイルサイズが小さい。
iPhoneでの開発に利用する場合は、.cafを利用したほうが良いと思います。
サウンドのフォーマット変換方法について
サウンドのフォーマット変換にはafconvertコマンドを利用します。
【コマンド内容】
/usr/bin/afconvert -f ファイルフォーマット -d コーデック {入力ファイル} {出力ファイル}
【例】
wavファイルから、16ビット、リトルエンディアン、リニアPCMのcafファイルを生成する場合
/usr/bin/afconvert -f caff -d LEI16 input.wav output.caf
wavファイルから、IMA4のcafファイルを生成する場合
/usr/bin/afconvert -f caff -d ima4@22050 -c 1 input.wav output.caf
注意点
上記に渡す「-f caff」ですが、「caf」ではないことに気をつけてください。私も、最初「caf」と入力してしまっていて、
Error: ExtAudioFileCreateWithURL failed ('typ?')
のエラーが出てしまっていました。拡張子ではなく、ファイルフォーマット形式なので、「caff」が正しいのですね。
[…] iPhoneアプリ開発のためのサウンドフォーマットまとめ | Pa-kun plus idea […]
[…] Swift:AVAudioSession アプリのバックグラウンドで音楽を再生する | siro:chro iPhoneアプリ開発のためのサウンドフォーマットまとめ | ぱーくん plus idea Core Audioの概要【PDF】 […]