!!!MinGW+ffmpeg 2008年春版 インデックス 猫科研究所ではデジタル動画・音声の研究をメインテーマにしていくつもりであるが、個人レベルでこれを行う場合に欠かせないのがffmpeg。 ''とにかく便利''であるし、ffmpegをビルドすることで''x264やfaac等もビルド''することになり、研究環境の構築が一通り済む。 研究の手始めに最適だ。 ここでは以下の要件に従い、2008年春時点でのffmpegのビルドを解説する。 *MinGWでWindowsのネイティブコマンドとしてビルド。 *メインは''H.264/AVC'' + ''AAC'' + ''mp4''。他は軽く。 *有効にする追加コーデック。 **MPEG-4 Part10 AVC / H.264 -> [x264|http://www.videolan.org/developers/x264.html] **AAC -> [faac / faad|http://www.audiocoding.com/] **MPEG-4 Part2 Visual -> [xvid(xvidcore)|http://www.xvid.org/] **MP3 -> [LAME|http://lame.sourceforge.net/] **AC-3 -> [liba52|http://liba52.sourceforge.net/] **[libamrnb/libamrwb|http://www.penguin.cz/~utx/amr]と[libdc1394|http://sourceforge.net/projects/libdc1394]は自分が不要なのであまりやる気無し。 *''マルチスレッド''対応。他所の記事は多くがシングルスレッドです。 *なるべく''DLL不要''(staticリンク)にする。 *x264の''MBAFF(インターレース)''を使用可能にする。 *当面のUIは携帯動画変換君を流用。そのうち自作したい。 ただし、DLL不要に関して、現状では不完全。 マルチスレッド対応のためpthreadGC2.dllが必要になる。 本特集が好評であればそのうち完全版にもチャレンジしたいと思う。 !本記事一覧 ::[[MinGW+ffmpeg(1)準備]] :::ビルド環境であるMinGWやソースファイルの収集に関して。 ::[[MinGW+ffmpeg(2)a52,xvid]] :::まずは問題の少ないliba52とxvidcoreをビルド。 ::[[MinGW+ffmpeg(3)faac,faad]] :::AACライブラリのlibfaac,libfaadのビルド。 ::[[MinGW+ffmpeg(4)LAME]] :::MP3エンコードライブラリのLAME(libmp3lame)をビルド。 ::[[MinGW+ffmpeg(5)pthread]] :::POSIX Threads for Win32(pthread-w32)ライブラリのビルド。 ::[[MinGW+ffmpeg(6)x264]] :::今回の目的への一翼であるx264(libx264)のビルド。 ::[[MinGW+ffmpeg(7)ビルド]] :::上記を組み込んだffmpeg本体のビルド。 ::[[MinGW+ffmpeg(8)改造]] :::x264のMBAFF(インターレース)対応、携帯動画変換君対応のffmpegの改造。 ::[[MinGW+ffmpeg(*)バグ?]] :::2008/04/02現在H.264/AVC+mp4で発生するバグらしき動作の解析。 :::数回に分割する上、解決できないかも知れないが…。 ::[[MinGW+ffmpeg(*)利用編]] :::有効なオプションの調査など。 :::利用編も長くなりそうなので別の特集にするかもしれない。 !Annex(付録) ::[[MinGW+ffmpeg(A)pthreadは複雑]] :::pthread-w32のみDLL使用となった経緯。 :::込み入った話なので内部に興味のある方のみどうぞ。 ---- インデックスだけ先に作っているので上記は予定で、未執筆の項目があります。 記事を書くのはあっという間だが、下調べに丸一週間以上かかってしまった…。 特にマルチスレッドとバグ動作は苦労させられ、自分もまだまだだと痛感。