おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

GoProで撮った画像をiPhoneで見られるようにUbuntuで加工する(その1)

まだ3日なんですよね……すでに達成できる自信がなくなってきたんですけど(^^;

あ、明日から勤労のみなさまお疲れ様です。当方無職なのでのんびり日記などを書いて過ごさせて頂きますです。

さておき、今日は昨日の予告通り、ffmpeg を使って GoPro で撮った画像を iPhone に転送して観られるようにしたよってネタです。ひじょーにしょうもない結果になりましたスミマセン。

GoPro って?

GoPro というのはですねー、ここ数年のエクストリームスポーツ界で非常に使われるようになった小型のスチル&ビデオカメラです。

GoPro HD Helmet HERO ゴープロ ハイディフィニション ヘルメットヒーロー WCHDHH1

GoPro HD Helmet HERO ゴープロ ハイディフィニション ヘルメットヒーロー WCHDHH1

ヘルメットマウントと防水ハウジング付き、なおかつ HD ムービーがけっこう長時間取れるってことで、多くのエクストリームスポーツのビデオで大活躍してると思います。例えばカヤックのビデオならとかで使ってると思います (ボートのへさきのところについてるのがわかると思います)。

んでまぁ私はホワイトウォーターカヤックなどを嗜んでおりまして、その楽しみはとても多岐に渡っており非常に魅力的な娯楽だと思ってるのでことあるごとに宣伝してるんですが、どーにもこーにも釣れる人がいませんw

きっと進め方が悪いのかなー、論より証拠で動画とか使ったほうがいいのかしらと思って、アクションカムATC-2K(だっけ)ってのを持ってたんですけど、これSDHC読んでくれないんですよね。ので1時間ぐらいしか動画取れない。さすがにツラすぎるので、eBay経由で購入しました。

んで試しどりしたのだけどだけど

いやーハイデフはやっぱ綺麗ですねー。綺麗なんですけど、ディスク食うんですわ。

手元にあるのが43分流し取りしたやつで、3.9G! ちょっと、持ち歩いてスマートフォンで見せるってわけにはいきません。これは変換してサイズ減らさないとダメですわなー。

つことで、愛用の Ubuntu 11.10 の環境で ffmpeg を使おうとしたら、「あー H.264コンパイル時に指定されてないんだわーゴメン!」っていわれちゃった。なんと。権利上の問題でござるかな。動画とかはこれだから色々めんどっちいよもう……。

で、色々調べたんだけど、色々考えるのめんどくさいからもう出てきたハウツーのままやっちゃえ! っていうのが今回のネタでございます。

ffmpeg と x264 の最新をビルドするよ

多分ですが、要求を満たすためには ffmpeg、といっても、Ubuntuffmpeg パッケージは、ffmpeg からフォークした libav を元にコンパイルされてるわけですが、まぁそれに --enable-libx264 を付けてリコンパイルすればいいだけだと思うのです。apt-get source でパッケージソース取ってきてビルドしたほうが依存関係とか考えると色々良さそう。

だけど今回はめんどくさかったので Ubuntu のフォーラムに紹介されてたやりかたをそのままトレースしました。ので、以下はこのハウツーをそのままやってるだけなので読まなくていいです。

まずは下準備

今回、ffmpeg と x264 (と libx264-dev) は checkinstall で作ったパッケージをぶち込むので競合するからあっさりとさようなら。

sudo apt-get remove ffmpeg x264 libx264-dev

んでビルドに必要なものをエイヤッと放り込む。

sudo apt-get install build-essential checkinstall git libfaac-dev libjack-jackd2-dev \
  libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev \
  libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev texi2html yasm zlib1g-dev

あ、ハウツーには書いてあるけど一部 multiverse にあるから enable にしておかないとダメすよみたいな。

関係ないけど Debian 系の build-essential って非常に便利で、他のディストリビューション使うと「えーとソフトをビルドするのに必要な最小構成って……?」っていちいち悩んでしまい悲しい。RH 系とか openSUSE にもこういうグループパッケージ的モノってあるのかしら。あったら教えてくだせー。

x264 のインストール

お次は x264 の最新を git で取ってきてビルドして checkinstall で入れる。おもいっきしコピペ。

cd
git clone git://git.videolan.org/x264
cd x264
./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
    awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
    --fstrans=no --default

ここで checkinstall についてはぐぐってくださいね。曲がりなりにもパッケージのフリをしてくれるので便利便利。

ffmpeg のインストール

ハウツーの方は VP8 のライブラリ libvpx のインストールがオプションで挟まるけど今回は省略して、お次は ffmpeg の方。こちらもおもいっきしコピペ。

cd
git clone git://git.videolan.org/x264
cd x264
./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
    awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
    --fstrans=no --default

さっきもそうだけどこの awk の使い方参考になりますね。

さてこれでうまく行くはずなので、試しに:

$ ffmpeg
ffmpeg version git-2012-01-03-2ba3416, Copyright (c) 2000-2012 the FFmpeg developers
  built on Jan  3 2012 20:46:42 with gcc 4.6.1
  configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab
  libavutil      51. 33.100 / 51. 33.100
  libavcodec     53. 50.100 / 53. 50.100
  libavformat    53. 29.100 / 53. 29.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 57.101 /  2. 57.101
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  5.100 /  0.  5.100
  libpostproc    51.  2.100 / 51.  2.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

よし、--enable-libx264 ついてる!

ということで試しにエンコしたらちゃんとできました。ぱちぱち。

終わりに

なんだか手抜き感満載ですみません。ホントは DEB パッケージの再構築やろうとして時間切れだったんです。

今の状態だと依存関係がぶっ壊れているので、例えば avidemux とかインストールできなかったりして色々悲しいので、あとでちゃんとやりたいすなー。

明日はもうネタ切れなのですけど、うーん、Apple AirPrint ネタでなにかやりますかねぇ〜。

それでは。