ラベル の投稿を表示しています。 すべての投稿を表示
ラベル の投稿を表示しています。 すべての投稿を表示

オーディオフォーマット変換 afconvert

2010年8月27日金曜日 | Published in | 1 コメント

このエントリーをはてなブックマークに追加

先日 MP3から AIFFへの変換に iTunesを使う方法を紹介したが、MacOSX にはオーディオフォーマットを変換できる afconvert というツールが標準で付属していることがブログのコメントへの書き込みで知った(335gさん情報どうも)。
Cocoaの日々: 効果音販売サイトの紹介と iTunesを使ったMP3からAIFFへの変換方法

調べてみるとなかなか使えそうなツールのようだ。以下、参考になったサイト。

[iPhone] オーディオファイルのフォーマット変換方法 | Sun Limited Mt.

Mac OS Xはコマンドも充実--「afconvert」でオーディオフォーマットを変換 - builder by ZDNet Japan

Happy Happy iPhone Game Programming : .WAVファイルを.CAFファイルにコンバート

.wavファイルをまとめてIMA4圧縮の.cafファイルに変換 - iPhoneアプリ開発ブログ

試してみた。


afconvert


利用例
$ afconvert -f caff -d ima4 -d LEI16@22050 input.mp3 output.caf

-h で使い方、 -hf でフォーマット一覧を見ることができる。
$ afconvert -hf
Audio file and data formats:
    '3gpp' = 3GP Audio (.3gp)
               data_formats: 'aac ' 'samr' 
    '3gp2' = 3GPP-2 Audio (.3g2)
               data_formats: 'aac ' 'samr' 
    'adts' = AAC ADTS (.aac, .adts)
               data_formats: 'aac ' 'aach' 
    'ac-3' = AC3 (.ac3)
               data_formats: 'ac-3' 
    'AIFC' = AIFC (.aifc, .aiff, .aif)
               data_formats: I8 BEI16 BEI24 BEI32 BEF32 BEF64 UI8 'ulaw' 
                             'alaw' 'MAC3' 'MAC6' 'ima4' 'QDMC' 'QDM2' 
                             'Qclp' 'agsm' 
    'AIFF' = AIFF (.aiff, .aif)
               data_formats: I8 BEI16 BEI24 BEI32 
    'amrf' = AMR (.amr)
               data_formats: 'samr' 
    'caff' = Apple CAF (.caf)
               data_formats: '.mp1' '.mp2' '.mp3' 'QDM2' 'QDMC' 'Qclp' 
                             'Qclq' 'aac ' 'aach' 'aacl' 'alac' 'alaw' 
                             'dvi8' 'ilbc' 'ima4' I8 BEI16 BEI24 BEI32 
                             BEF32 BEF64 LEI16 LEI24 LEI32 LEF32 LEF64 
                             'ms\x00\x02' 'ms\x00\x11' 'ms\x001' 'samr' 
                             'ulaw' 
    'm4af' = Apple MPEG-4 Audio (.m4a)
               data_formats: 'aac ' 'aach' 'aacl' 'alac' 
    'MPG1' = MPEG Layer 1 (.mp1, .mpeg, .mpa)
               data_formats: '.mp1' 
    'MPG2' = MPEG Layer 2 (.mp2, .mpeg, .mpa)
               data_formats: '.mp2' 
    'MPG3' = MPEG Layer 3 (.mp3, .mpeg, .mpa)
               data_formats: '.mp3' 
    'mp4f' = MPEG-4 Audio (.mp4)
               data_formats: 'aac ' 'aach' 'aacl' 
    'NeXT' = NeXT/Sun (.snd, .au)
               data_formats: I8 BEI16 BEI24 BEI32 BEF32 BEF64 'ulaw' 
    'Sd2f' = Sound Designer II (.sd2)
               data_formats: I8 BEI16 BEI24 BEI32 
    'WAVE' = WAVE (.wav)
               data_formats: UI8 LEI16 LEI24 LEI32 LEF32 LEF64 'ulaw' 
                             'alaw' 


変換結果


手元にあった 1秒のMP3形式の効果音ファイルを CAF, AIFF へ変換してみた。
508  afconvert -f caff -d ima4 -d LEI16@22050 -c 1-o pin1.caf pin.mp3
$ afconvert -f caff -d ima4 -d LEI16 MP3_original.mp3 CAFF_LE16.caf
$ afconvert -f caff -d ima4 -d LEI16@22050 MP3_original.mp3 CAFF_LE16.caf
$ afconvert -f AIFF -d BEI16 MP3_original.mp3 AIFF_BEI16.aif

AIFF はWikipediaによればビッグエンディアン固定のようなので "-f AIFF -d LEI16" と指定するとエラーとなる。
$ afconvert -f AIFF -d LEI16 MP3_original.mp3 AIFF_LEI16.aif
Error: ExtAudioFileCreateWithURL failed ('fmt?')

ファイルサイズは次の通り。

AIFF_BEI16.aif       167,868
AIFF_BEI16@22050.aif  85,984
CAFF_LEI16.caf       167,868
CAFF_LEI16@22050.caf  85,984
AIFF_itunes.aif      159,206
MP3_original.mp3      22,569

MP3_original.mp3 が変換元、AIFF_itunes.aif はiTunes10で変換したもの。面白いことに AIFF も CAFF もサイズは同じとなった。また当然ながらビットレートを制限 (22KHz)に制限した邦画サイズが小さくなる(44KHzの半分なので、サイズも約半分)。


サンプル


これらの音をサンプルを作って実機で鳴らしてみた(iPhone3GS/iOS4.01)

使用した効果音は下記から拝借した。
▼こだま標準効果音ライブラリ(β) |株式会社こだまプロダクション
(このサイトでは数多くの音源を紹介していて「無料のコンテンツへの利用、かつ個人でのご利用」であれば条件付きで無料となる。商用利用向けのライセンスもありそんなに高くない)

結果:
・どれも音の違いは感じられなかった。=> 22KHzでも十分なのでサイズを気にする場合はレートを低くする
・MP3 は実機では再生できなかった。シミュレータでは鳴る(これはネットで出回っていた情報の通り)。
・AIFF=ビッグエンディアンでも再生ができた(ネット上ではリトルエンディアンで無いと駄目みたいな情報もあった)


サンプルのソースコードは GitHub からどうぞ:
SoundSamples at 2010-08-27 from xcatsan's iOS-Sample-Code - GitHub


AIFF vs CAF


AIFF(Audio Interchange File Format) は Wikipedia によれば、
AIFF (Audio Interchange File Format、読みは後述) は、アップルコンピュータにより開発された音声データのファイルフォーマットである。主としてMacintoshやAmiga上で使われるファイル形式である。
とあった。通常は非圧縮でビッグエンディアン。

AIFF - Wikipedia


一方、CAF(Core Audio Format) とは Core Audio APIs でサポートされるファイルフォーマットのようだ。
Apple Core Audio Format Specification 1.0: CAF File Overview

上記情報によれば次の特徴がある。

  • サイズの制約なし(数百年分保持できる!?)
  • ヘッダのファイナライズが不要(音データの追記が可能)
  • 多くのでデータフォーマットに対応
  • 多くの補助データ(メタデータ / auxiliary data)に対応(annotations, markers, channel layouts, ...)

この CAF はコンテナとも言うべき存在で、中身のデータ形式(データフォーマット・圧縮方式など)は様々なものに対応している。

Core Audio Overview: Supported Audio File and Data Formats in Mac OS X

上記ページから抜粋:
'.mp3', 'MAC3', 'MAC6', 'QDM2', 'QDMC', 'Qclp', 'Qclq', 'aac ', 'agsm', 'alac', 'alaw', 'drms', 'dvi ', 'ima4', 'lpc ', BEI8, BEI16, BEI24, BEI32, BEF32, BEF64, LEI16, LEI24, LEI32, LEF32, LEF64, 'ms\x00\x02', 'ms\x00\x11', 'ms\x001', 'ms\x00U', 'ms \x00', 'samr', 'ulaw'


CAF は iPhoneの場合、電話着信音のフォーマットとしても利用されている。

iOS で効果音を鳴らす場合は、AIFF と CAF のどちらを使うべきか?ネットを探したところフォーマットの違いはわかったものの、使い分けの指針らしきものは見つけられなかった(知っている方がいたら是非情報を教えて下さい)。


その他


フリーの効果音サイト(らしい)。
"The Freesound Project"
freesound :: home page

効果音を鳴らす

2010年8月25日水曜日 | Published in | 1 コメント

このエントリーをはてなブックマークに追加

覚え書き。iPhoneで効果音を鳴らす方法など。

この辺りが参考になった。
AudioService - 短いファイルを再生する - iPhoneアプリケーション開発
[iPhone 開発メモ] 短い音を再生する方法 | Sun Limited Mt.


効果音を鳴らす


ファイル形式:AIFF

実装のポイントは3つ。

1. AudioToolbox.framework を追加
2. SystemSoundIDを登録(交換音ファイルを登録)
3. 音を鳴らす


こんな感じ。できるだけ使い慣れているNS系クラスで書いている。

効果音ファイル:sound.aif (AIFF形式)
SystemSoundID soundID;
NSURL* soundURL = [[NSBundle mainBundle] URLForResource:@"sound"
       withExtension:@"aif"];
AudioServicesCreateSystemSoundID ((CFURLRef)soundURL, &soundID);
[soundURL release];
AudioServicesPlaySystemSound (soundID);

効果音販売サイトの紹介と iTunesを使ったMP3からAIFFへの変換方法

2010年8月21日土曜日 | Published in | 2 コメント

このエントリーをはてなブックマークに追加

soundsnap


知人から教えてもらった効果音販売サイト。
Soundsnap.com: High Quality Sound Effects and Loops

ここは量・質共になかなかいい。1秒からの短い効果音も多いので iPhoneアプリでちょっとした音を出したい(例えばボタンのタップ音)時に使える音が揃っている。

カテゴリは 16種類。


一覧の各効果音毎に Flash製のプレイヤーが付いていてその場で音を確認することができる。グラフがあるのもいい。


費用は 5ファイル $9 より。購入数が増えると単価が安くなる。

ファイルの形式は MP3 と WAV。AIFFは記載はあるものの、ほとんどの音源で提供されていない。


MP3をAIFFに変換する


iPhone で効果音を鳴らす場合、MP3ではなく AIFF を使う。このため効果音を MP3で入手した場合は AIFFに一旦変換する必要がある。この変換は iTunes で行うことができる。以下、iTunes 9.2.1 でのやり方。

変換元


今回はこのMP3ファイルをAIFFへ変換してみる。

(1)iTunesへ追加


MP3ファイルを iTunesへ読み込ませる。これは MP3ファイルを iTunesへドラッグ&ドロップすればいい。


(2)設定変更


iTunesの「環境設定」を開く。


「一般」の中にある「読み込み設定...」ボタンを押す。


「読み込み方法」を "AIFFエンコーダ" に変更する。

※なおこの変換作業が終わったら元に戻しておくこと(通常は AAC エンコーダ)。そうでないとオーディオCDを読み込むときに AIFF形式でファイルが作られる(サイズがバカでかくなる)。

設定が終わったら、設定画面をすべて閉じる。


(3)AIFFファイル作成


MP3ファイルを選択した状態でメニュー「詳細」から "AIFF バージョンを作成" を選択する。


すると MP3ファイルと同じフォルダ内に AIFF形式のファイルが作成される。


ちなみにサイズは次のようになった。
check.mp3 (8KB)
check.aiff (49KB)

人気の投稿(過去 30日間)