動画や音声ファイルはそのままではとても容量が大きいので、通常は圧縮処理されて容量が抑えられており、その圧縮処理をエンコードという。
有名なエンコーダにはmp3のlame、mp4などのffmpegがある。これらはwindowsのCUIやさまざまな動画編集ソフトにも含まれているが、cygwinでもffmpegが使えるようにしたかった。そこで結構いろいろひっかかったのでまとめて行こうと思う。
まず、音声ファイルを処理するためにlameが必要になる。lameはapt-cygではインストールできず、そういった場合はソースコードをダウンロードしてmakeでコンパイル、ビルドすることになる。cygwinPortsというものを使えばできるらしいが、うまくいかなかった。
一般的に、ソースコードからのビルドは次の手順で行う。
1.wget http://sample.com/source.tar.gzをダウンロードする
2.tar zvcf source.tar.gz
3.cd source
4. ./configure --prefix=/install/path
5.make
6.make install
1はsourceforgeのことが多い。うまくできなかったらブラウザからダウンロードしてもよい。またgitHubなどで配布されているパッケージの場合は
git clone
の場合もある。この場合はtarで解凍する必要はない。
4はインストール先をprefixで選ぶ。"/usr"や"/usr/local"が多い。「configureというスクリプトが用意されており、このスクリプトでmakefileを生成する」というのは慣習になっているようだ。
5,6は重複しているわけでなく、makeしてからmake installを実行する。これも慣習のようだ。
さて、lameの話にもどろう。lame以外で必要なパッケージは参考サイトを参照してもらって、lameのインストールについては以下のようにすればできる。
wget http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
cd lame-3.99.5
configure
make
make install
lameの場合、makeでエラーが出る。一つ目は
inlining failed in call to always_inline '_mm_sqrt_ps': target specific option mismatch
というものだ。これは参考サイトError building mingw-w64-lame · GitHubの通り
sed -i -e '/xmmintrin\.h/d' configure
で回避する。
次に、_O_BINARYが宣言されていないといった旨のエラーが出る。これは以下のサイトの通り修正する。具体的には、その変数_O_BINARYが使用されている箇所を削除してしまう。
Windows(Cygwin)でも mpd + ncmpcppを使いたい - Qiita
これでビルドが通り、lameが使えるようになった。
ちなみに、lameによるmp3は非可逆圧縮と呼ばれる方式になっている。簡単に言うと、周波数が大きい領域の情報を切り捨てて圧縮しているので、圧縮したmp3から元の音声を100%復元することができない。
音声の圧縮にはflacに代表される可逆圧縮の方式もある。これは圧縮したあとのファイルから元の音声を100%復元することができ、mp3の次に普及するのではと注目されている。
そんなflacのコーデックだが、これはインストールはとても簡単で、apt-cygでインストールすることができる。