Bluepostech

まじめなことを書きます

【cygwinで動画編集】2.ffmpegのインストール

lameをインストールした前回に引き続き、ffmpegをインストールしてみよう。

ffmpegもソースからビルドしなければならず、依存するパッケージもたくさんあるが、よくまとまったサイトがたくさんあるのでそちらを参照していただきたい。

僕がインストールしたときに困ったのは、lameが読み込まれないということだ。最悪オプションから--enable-libmp3lameを外せばインストールできるが、それでは音声が圧縮できないので困る。

これについてはlibmp3lame関係のパッケージを/usr/binに移したところ、うまくmakeできた。

さて、このmakeだが、かなり時間がかかる。はっきり覚えていないが1時間くらいかかったかもしれない。

さて、ビルドが終われば晴れてffmpegが使えるようになる。

【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でインストールすることができる。

cygwinでpython・pip・numpy・matplotlib

cygwinwindowsでプログラム環境を作るのには強いツールと言える。apt-cyg install gccとかでコンパイラが入るので、windowネイティブのバイナリをいちいちダウンロードして実行するより楽だ。

しかし、pythonとは非常に相性が悪いらしい。pythonを入れるだけならそうではないが、描画ライブラリなどを入れるのには「too painful」らしい。

ご多分にもれず自分も非常に苦労したので、まずこうすればうまくいくという方法を書いてから、そこにいたるまでの顛末を書いておこうと思う。

1.うまくいく方法:setup.exeからインストールする

この記事にたどり着くまでに散々見てきたことかもしれないが、「CUI上でのインストールは諦めるところからはじめろ」という記事や「CUIからインストールしようとしたが結局うまくいかない」といった記事など、CUIのみで最後までうまくいったものは僕は見つけられなかった。

中には「MinGWを使え」とか「winのバイナリでインストールしろ」といった意見もあるくらいだった。しかしそれではこだわり信念に反するので、なんとかcygwin内で完結する方法でインストールしたかった。

まずはsetup.exeからpythonのパッケージを全部インストールした。「python」カテゴリをDefaultからInstallにすればよい。

次に、cygwinを管理者権限で立ち上げ、

pip install numpy matplotlib scipy

でインストールしたところ、なんとかできたようだった。最初普通に立ち上げてmatplotlibをインストールしたところ権限の問題でひっかかったようだが、なぜか問題なく使うことができた。

インストールできたかチェックするには、pythonを立ち上げ

import numpy
import scipy
import matplotlib

などとすればよい。

------------------------------------------------------------------------------------------------

2.うまくいかなかった方法

(1)pythonのインストール

これは単純に

apt-cyg install python

(2)easy_install pipのインストール

easy_installとは、python環境を整えるためのツールである。割と最近名前が変わったらしい。

apt-cyg install python-setuputils

コマンドの名前は「easy_install-2.7」とちょっと長いのでエイリアスを刺しておく。たしかこれでpipも入る。

alias easy_install="easy_install-2.7"

(3)numpyのインストール

apt-cyg install python-numpy

(4)pipのインストール

pipというのは、pythonのライブラリを管理するツールだ。

pip install matplotlib

うまくいかなかったらcmdでashから/bin/rebaseallを実行する必要があるらしい。これはcygwinのバグとのことだが、どうやってもpip installがうまくいかず、ここまでのやり方ではうまくインストールして使うまでにこぎつけることができなかった。