macOSにはafで始まる名前の、オーディオファイルを操作するコマンドラインアプリが入っています(afclip、afconvert、afhash、afida、afinfo、afplayの6つ)。僕がよく使うのはafinfoとafconvertです。
afinfoは以下のようにオーディオファイルの情報を表示してくれます。中身が2チャンネル、標本化周波数44100 HzのFLACファイルだということがわかります。もともと16ビットの音源を変換したものであるとか、長さが約37秒だということも読み取れます。
% afinfo sound.flac File: sound.flac File type ID: flac Num Tracks: 1 ---- Data format: 2 ch, 44100 Hz, flac (0x00000001) from 16-bit source, 4096 frames/packet Channel layout: Stereo (L R) estimated duration: 37.565238 sec audio bytes: 3215398 audio packets: 405 bit rate: 683830 bits per second packet size upper bound: 11221 maximum packet size: 11221 audio data file offset: 8358 optimized audio 1656627 valid frames + 0 priming + 2253 remainder = 1658880 source bit depth: I16 ----
afconvertは音ファイルのフォーマット変換に使います。その時には、出力されるファイルフォーマットとデータフォーマットの二つを指定しないといけません。というのも、例えば.wavファイルの場合、ファイルフォーマットはWAVE規格で決まっていて、一般的な整数型のPCMだけでなく、浮動小数点数やA-Lawのようなデータも扱えるようになっているからです。同様に.m4aファイルでも(afconvert -hf
とすると、変換できるファイルとデータのフォーマット組み合わせの一覧が出てきます)。
WAVEファイルをApple Losslessに変換するには、以下のようにします。ファイルフォーマットはm4af (Apple MPEG-4 Audio)で、データフォーマットはalac (Apple Lossless Audio Codec)です。よく使われているファイルの拡張子はm4aです。
% afconvert -f m4af -d alac input.wav -o output.m4a
一方でFLACやAC-3のように、単一のデータフォーマットしか扱わないファイルフォーマットもあります。その時にはデータフォーマットは省略できます。
% afconvert -f flac input.wav -o output.flac