ffmpegをCentOS 4.7 Finalにインストール

携帯動画変換君などで利用されているffmpegですが、CentOS 4.7 Finalで何とかインストールする事が出来たのでメモしておきます。

□関連:携帯向けに簡単に動画を変換してみよう(携帯動画変換君) – MobileHackerz
http://mobilehackerz.jp/contents/3GPConv

これまでにも、数年前にFreeBSD上などでインストールしてみようとした事はあったのですが、挫折した事があります。なにせffmpegはかなりコンパイルが面倒な部類のプログラムです。ちょっと古い環境だと直ぐコンパイルできなくなります。天才の部類の人たちは何とかしちゃうのかも知れませんけど、僕みたいな一般ピープルはネットに有る情報を元にコンパイルするしかないのでそれがだめだともうお手上げだったりします。

基本は最新の環境でコンパイルするのがベストです。

1日目、とりあえずVMware上のCentOS 4.7 Final上でコンパイルを試みてみたのですが挫折しました。1日潰しました。バカですw。

とりあえず、最新の環境でメジャーな環境ならいけるのかと思い。VMware Player上にFedora 9の環境を構築してコンパイルしてみたら成功した。万歳である。先人達の偉業に感謝です。

ちなみに何がやりたくてこんな事をしているのかというと全てはauの携帯がウンコだからである。何がウンコかというとそれはもう壮大なウンコなのです。(嘘です。)簡単に説明すると。auにはEZムービーが有ります。メールで添付できたりするんですね。で150KBまでメールで送れるんですよ。携帯同士だとどうかわかりませんが、普通のメールにEZムービーの動画を添付すると高画質の場合3gpp形式の動画になるんですね。この動画、ドコモやソフトバンクのAuで普通に見ることができるのですが、140KBの制限というものがあってですね。3gpp形式の動画で140KBを超えるとauでは再生されなくなるんですね。ダウンロードしても関係なく動画として認識さえされなくなります。なのでメールを使って動画をアップロードしてそれを閲覧しようとすると150KBのサイズまで送れるにもかかわらず140KBを超えているとauでは閲覧できなくなってしまうんですよ。ウンコですねw。

で、auの場合140KBを越える場合は3gpp2形式にしてあげないといけないんですね。3gpp2形式だと最大512KBまではいけるようです。(機種によるけど)

まーそこらへんの仕様は下を見てください。

とはいっても簡単に3gppを3gpp2形式に変換する環境を構築ことはできないのであります。結構骨の折れる作業なのです。

この制限がなくなることを数年待ちましたが今のところなくなりそうにもないですねw。

□関連:KDDI au: 技術情報 > EZムービー
http://www.au.kddi.com/ezfactory/tec/spec/ezmovie01.html

□関連:着うたの仕様・容量 – 着うたのダウンロード方法~携帯サイト [ドコモ(iモード),au(EZweb),ソフトバンク(SoftBank)]
http://memorva.jp/memo/mobile/chaku_uta.php

それで、ffmpegを使えば着歌とか作ったり、3gppや3gpp2形式の動画を普通のaviやwmvにしたり、flvにしてみたりする事ができるわけです。逆に普通のaviやmpegやwmvの動画を携帯用の動画(3gpp)等にしたりする事ができるわけなんですね。

今回はとりあえず、3gppを何とか3gpp2に変換したいわけです。そういうことで話を進めます。

■とりあえず、ここを見ればOKなところ

□関連:3G携帯の動画を扱うためのffmpegのビルド方法 – blog.katsuma.tv
http://blog.katsuma.tv/2007/09/build_ffmpeg_for_3g_mobile.html

※とりあえず、上のサイトを参考にさせていただいて最新環境を整えればコンパイル&インストールまで行くと思う。

状況は常に流動的なので今現在はそうであると言っておきます。

上記のサイトではFedora 5と6と7の場合を書いてありますが、Fedora 9の場合7のとおりにやれば問題ないです。(現時点ではw)

■その他参考にさせて頂いたところ

□関連:携帯なんて大嫌いっ!!! at zeta-blog.com
http://zeta-blog.com/3.html

※使い方や、環境の構築など役立つ情報があります。

□関連:[ロ] CentOS4.4 + ffmpeg でflv から 3gp に変換する(前編) – LOWTECH.NE.JP – ロウテクなサーバ管理者のブログ
http://yosiwo.lowtech.ne.jp/index.php?itemid=568
※flv系の為のコンパイル情報になります。

□関連:ffmpegでストリーミング配信 – ももーい鯖覚書
http://www.momo-i.org/?ffmpeg%E3%81%A7%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E9%85%8D%E4%BF%A1
※configureオプション関係の役立つ情報あり

■お手軽にFedora 9の環境を構築するには

余ってるパソコンなどがない場合は、バーチャルマシン環境を構築するのが手っ取り早いです。(CentOSの環境を構築す場合もほぼ同様。っていうかどのOSでも)

□関連:Fedora Project
http://fedoraproject.org/ja/get-fedora

※ここからFedora 9の CDイメージまたはDVDイメージをダウンロードします。

直接またはトレントを使ってダウンロードします。サイズは3G超です。

□関連:BitComet – C++ BitTorrent クライアント
http://jp.bitcomet.com/

※僕はBitCometを使ってダウンロードしました。

□関連:VMware: 仮想化、仮想マシン、サーバ統合 – VMware
http://www.vmware.com/jp/

※上からVMWarePlayerをダウンロードしてインストールします。

□関連:VMware Utilities Homepage
http://petruska.stardock.net/Software/VMware.html

※上からVMX Builderをダウンロードしてインストールします。手動でVMwareの設定をするのは難しいですが、VMX Builderを利用すれば簡単に仮想ディスクの作成からVMWareでFedora 9をインストールする為の設定をする事が出来ます。

□関連:インストール完全ガイド Fedora 9:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20080516/302111/?ST=oss&P=1

※後はここを見ながらインストールを行なえば問題なくインストールできるはず。見なくてもできると思うけど。

■肝心なCentOS 4.7 Finalでコンパイル成功するには

□関連:FFmpeg
http://ffmpeg.mplayerhq.hu/
※通常はここからffmpegの最新ソースをダウンロードします。

しかし、CentOS 4.7 Finalでは最新のソースを使ってのコンパイルはとおりませんでした。そこでネット上で過去のソースを探しました。色々試してみてやっとコンパイルできたのが、

□関連:Index of /pub/FreeBSD/ports/local-distfiles/ahze/
http://ftp.yz.yamagata-u.ac.jp/pub/FreeBSD/ports/local-distfiles/ahze/

※過去のソースを探してたどり着いた山形大学のAnonymous FTP serverです。

「ffmpeg-2008-04-09.tar.bz2」でコンパイルする事が出来ました。山形大学グジョブ(*゚д゚)b

ただ、「/pub/FreeBSD/ports/」とあって本来FeeBSDのPortsの様ですが、まーコンパイルできたんだしいいよねw。

よく判らなかったので過去のソースのターボール捜してきましたが、ffmpegのサイトは現在SVNでソースのバージョン管理を行なっていてソースの取得もそこからチェックアウトするようになっているのでもしかすると、過去のバージョンを指定してダウンロードする方法があるかもしれないと思ったのですが、誰か知ってたら教えてね(はーと)

blog.katsuma.tvさんの記事を元に手順を一応書いておきます。

うまくいかない場合は元記事を見てください。

□前準備、必要なツールのインストール(大抵入っている)

yum install dos2unix
yum install automake
yum install libtool
yum install install gcc-c++
yum install compat-gcc-32(CentOS 4.7 Finalだと通常これ)

□faacインストール(一応現在の最新版にして有ります。)

wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz
tar -zxvf faac-1.26.tar.gz
cd faac
dos2unix Makefile.am bootstrap configure.in
./bootstrap
./configure –prefix=/usr
make
make install
/sbin/ldconfig

□faadインストール

mkdir faad
cd faad
wget http://darusuna.sakura.ne.jp/src/faad2-15092004.tar.gz
tar  -zxvf faad2-15092004.tar.gz
sh bootstrap
./configure CC=gcc32
make
make install
/sbin/ldconfig

※下で割と新しいバージョンがダウンロードできるようですが試していません。余力がある方はどうぞ

http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz

□amrnbのインストール(現在の最新版)

wget ftp://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2
tar -xvjf amrnb-7.0.0.2.tar.bz2
cd amrnb-7.0.0.2
./configure
make
make install

□amrwbのインストール(現在の最新版)

wget ftp://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2
tar -xvjf amrwb-7.0.0.3.tar.bz2
cd amrwb-7.0.0.3
./configure
make
make install

□ffmpegのインストール

最近のバージョンだと「–enable-nonfree」をつけないとconfigure出来ないらしいです。

wget http://ftp.yz.yamagata-u.ac.jp/pub/FreeBSD/ports/local-distfiles/ahze/ffmpeg-2008-04-09.tar.bz2
tar -xvjf ffmpeg-2008-04-09.tar.bz2
cd ffmpeg-2008-04-09
./configure –cc=gcc32 –enable-gpl –enable-libfaac –enable-libfaad –enable-libamr_wb –enable-libamr_nb –enable-nonfree
make
make install

※configureとmakeがうまく最後まで完了してくれるか手に汗握りますw。

□LD_LIBRARY_PATHを設定

cd /etc/ld.so.conf.d
vi ffmpepg.conf
/usr/local/lib と書き込む
/sbin/ldconfig

完了です。

□実際に変換できるかやってみる

で上のほうで紹介した携帯なんて大嫌いっ!!! at zeta-blog.com さんの記事を参考にして

auの携帯で撮影した、93KBの3gpファイルと146KBの3gpファイルを用意して実際に3gpp2に変換をしてみた。

ffmpeg -i 93.3gp -y -async 1 -vcodec mpeg4 -s 176×144 -r 14.985 -b 64 -acodec libfaac -ac 1 -ar 22050 -ab 16k -f 3g2 146.3g2

ffmpeg -i 146.3gp -y -async 1 -vcodec mpeg4 -s 176×144 -r 14.985 -b 64 -acodec libfaac -ac 1 -ar 22050 -ab 16k -f 3g2 93.3g2

動画ファイルの置き場所には下の.htaccessを置いておくと安心

AddType application/x-smaf .mmf
AddType text/x-hdml .hdml
AddType application/x-mpeg .amc
AddType video/3gpp2 .3g2
AddType audio/3gpp2 .3g2
AddType video/3gpp .3gp
AddType audio/3gpp .3gp

auの仕様どうりにOBJECTタグで指定するのが正統派ですが、単にAタグでリンクしただけでも携帯から再生できました。

<html>
<head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Cache-Control" content="max-age=0">
</head>
<body>
<A href="93.3g2">93KB(3G2)</A><br>
<A href="146.3g2">146KB(3G2)</A><br>
</body>
</html>

 

という感じでうまくいきました。
参考にさせていただいたサイトの皆様に感謝です。

2008.10.24追記
□関連:ffmpegをCentOS 4.7 Finalにインストール その2 につづく
http://blog.kumacchi.com/2008/10/ffmpegcentos_47_final_1.html

タグ : , ,