Bluepostech

まじめなことを書きます

【cygwinで動画編集】1.lameとflac

動画や音声ファイルはそのままではとても容量が大きいので、通常は圧縮処理されて容量が抑えられており、その圧縮処理をエンコードという。

有名なエンコーダにはmp3のlame、mp4などのffmpegがある。これらはwindowsCUIやさまざまな動画編集ソフトにも含まれているが、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でインストールすることができる。