Download Esperance
ソースファイル版とソースファイルも含むバイナリ版を配布いたします。ライセンスは
GPL
です。いろいろと自由ですが、コピーレフトを忘れないで下さい。
ファイル名のrevは、Subversionの管理番号ですので必ずしも連続番号で公開するという
感じにはなりません。
Revisionによる改良点は、このページの下部を参照下さい。
WIKI WIKI WIKI
rev.72以降のバージョンから、wikiを通じて配布をしようと思います。ファイルの実体は、このブログにアップしていますが、、、
ソースファイルのパッケージです。GUIソース、JAVA用のJNIソース、JXTAの基盤ファイル、などなどがごちゃごちゃ
と入っています。メインソース以外は最新のものとは限りません。
基本的に、makeでビルドできる普通のCUIプログラムとして認識して下さい。
Mac版CocoaGUIパッケージ。PowerPC向けにコンパイルされています。
変更箇所などは、wikiページを参照してください。というか、wikiがメインサイトになります。
Windowsコマンドラインバージョン。エンジンはMacOSXと同じものを使用しております。
やはり Pentium系の最適化されたコードを利用することができますのでPowerPCにくらべて高速な
エンコードが可能です。
Linux版CUIパッケージ。IntelCPU向けにコンパイルされていて、ペンティアム4以降のCPUで動作すると思われます。
Vinelinux3.2で適当にコンパイルされています。Fedora等では動かないかも。ソースが公開されていますので、
自力でコンパイルしてください。
Change Log
-rev.72 ...
wikiページを参照してください。
-rev.70 to rev.71-
VFRストリームの素材に対しても、B-Frameの利用が可能になりました。が、完全では無いようです。再生はスムースで問題ありません
ビデオフレームのディレイ機能を付け加えました。映像のみが後ろへずれます。最初のフレームが長くなるだけで、余計なフレームや白フレームの挿入などはおこないません。ですので、映像と音声がずれているときの微調整が可能です
リサイズに小さいサイズを加えました。高速エンコードなので、主に私のデバッグ用です
-rev.69 to rev.70-
映像・音声サンプル数の、より正確なエンコード。今まで最後の1〜3フレームが欠落していましたが、より正確になるように改良
バッファサイズを増やし、より大きなサイズ(854 x 480など)の素材のエンコードに対応
複数ファイルの連続エンコーディングに対応中
-rev.65 to rev.69-
rev65で、B-Frameを利用した際に、正しいmp4が出力できない問題がありました。申し訳ございませんでした
rev66で、ライブラリの依存関係から、音声無しのファイルが出力されてしまうことがある問題がありました。libavcodecsを再コンパイルしてこの問題を解決しました。(できてませんでした、古いバージョンに戻して解決しました。すみません。)
rev67で、libmp3lame.dylibがシステムに無い場合に、ソフトが起動しない問題がありました
rev69で、libavcodecs(ffmpeg)を以前利用していたバージョンに戻しました。これで、悪夢ともさよならです。a52モジュール・xvidモジュールを有効にして再コンパイルしました(CVS20051115)。mp3を入力として持つソースは恐らく開けません
-rev.64 to rev.65-
rev65において、libavcodecs(ffmpeg)をCVS-20060303へ更新。さらに、a52・mp3lame・xvidcoreを有効にしましたので、開けるファイルの種類が増えています。アナウンスはしておりませんでしたが、かなり以前のバージョンから暗号化されていない.vobファイルを開くことが出来るようになっています。が現状、大抵の場合ソフトごと落ちたり、正しくエンコードできないです。
ついでに、x264もRevision.451へ更新
B-Frameを利用しない場合の、フレームの長さのハンドリングをより正確なものへ改良。VFRみたいなストリームに対しても対応できます。多分、、、
-rev.59 to rev.64-
rev.64にてB-Adaptiveが有効にならないバグを修正しました。Bを利用するときは、rev.64以降を利用して下さい。ごめんなさい
B-Frameを利用したエンコードに対応。x264のadaptiveBも利用可能です。QuickTimeできちんと再生されます
B-Frameを利用した際に生じる、最初のI-Frameのディレイに対し、まずI-Frameを長さ0として書き込み、
さらにもう一度同じI-Frameを1フレーム分オフセットさせて書き込むように変更。これによって冒頭が白フレームになってしまう問題を回避
GUIをちょっとてこ入れして、見栄えの良いものに改良したつもりです
次回の大きな改良として、エンコード設定のプリセット機能を実装するつもりです
-rev.58 to rev.59-
MP4のV-Syncフラグをハックする(全てIフレームと嘘ついちゃう)機能をきちんと実装しました
-rev.57 to rev.58-
バグフィックス。2passログファイルのハンドリングを修正しました。きっとうまく動いてくれるはずです
-rev.56 to rev.57-
MacGUI版において、デブロックのパラメタがきちんと設定されていなかったバグを修正。
rev57への更新を推奨いたします。ご迷惑をおかけしました
細かな挙動を修正
x264の2パスログファイルの保存場所を、実行するユーザのホームディレクトリになるように修正
CBRモードのビットレートは一時的に1000kbpsに固定しています
-rev.55 to rev.56-
CBRの2パスエンコードモードに対応しました。
-rev.54 to rev.55-
CRF、CQP、ABRの各種エンコードモードに対応
MP4出力の際に、PフレームとIフレームを区別することができるようになりました
進行状況のGUIパーツを付加
エンコード時の初期パラメータを、いいんじゃない、な画質になるように調整
-rev.51 to rev.54-
音声関係をちょこっと修正
X264のノイズリダクション機能を有効にしました。はっきり言って効果は軽微です
出力ファイルの形式で、プログラムストリーム、映像のみ、音声のみが選択可能になりました
デインターレースが選択可能になりました
出力サイズの変更が可能になりました
Infomations
現在、CUI版のクオリティなどはコンパイル時に設定されています。またサイズ等は入力ソースに依存致します。
サイズの大きいものに対しては、デインターレースが適用されます。またシークはもの凄く強いのですが、I-Frameが
でてくるまで、画像が動き情報のものだけになります。
2-Pass Encoding 内部動作の覚え書き
2-Passなら、1stエンコードルーチンに入る。このとき、デコードと映像エンコードのみを行い、音声とかは放置。また、MP4ファイルへも書き出さない
2ndエンコードルーチンに入る前に、x264とffmpegを一旦クローズ&フリーして開き直す。そうしないと、内部バッファなどの関係で、2ndパスの動作がうまくいかない。
通常のエンコードのように、2ndパスエンコードを行う。音声などももちろんハンドルされる。x264の1stパスのログファイルがきちんと発見できない場合、アプリケーションが落ちる。
Compiling and Building
ソースを配布していますので、コンパイルであなた自身の環境のバイナリを作成
することができますが、私の力不足で多少面倒が必要な状況があります。
また各ファイルは、7zip形式で高密度に圧縮されています。
New Style - 現在はうまくいきません
ビルディングシークエンスにJAM(Judy And Maryではありません)を利用します。makeでも
ビルドできるようになっていると思います。Jamを用いることによって、関連ライブラリ等
の一括コンパイルや、外部プログラムとの連携(makeなど)を行うことも可能です。
実際x264とffmpegは、makeでコンパイルします。
[Me]$ cd Esperance
[Me]$ jam
とタイプするだけで、片っ端からコンパイルしまくって、バイナリを作成します。Jamは
以下のリンクからゲッツできます。開発者の方々に感謝いたしましょう。
Jam Link (http://freetype.sourceforge.net/jam/)
Easy Way
make
もし、以下のライブラリが、/usr/local/libならびに、/usr/local/includeに
あるならば、上のようにmakeと打つだけでバイナリがbin/ディレクトリに作成
されると思います。
要は、各プロジェクトをインストールするときに、--prefix=/usr/localとして
インストールされていれば問題ありません。実際には関連するヘッダファイルなどを
内部で呼び出しますので、下記のファイル以外にも気をつける必要があります。
- FFMPEG
libavcodec.a libavformat.a libavutil.a avcodec.h avformat.h avutil.h
- MPEG4IP
libmp4v2.a mp4.h
- X264
libx264.a x264.h
- FAAC
libfaac.a faac.h
Chotto Hard
もし独自にどこか適当なところにライブラリが存在する場合、例えば以下のように
コンパイルしてください。まあ、この場合でもヘッダファイルがないので、コンパイル
エラーになりますが、そのときはいろいろなオプション(-Iとか-Lとか)を加えたり、
ソースを書き換えてください。
g++ -o Esperance Main.cpp -g -Wall -Os \
-I../hoge/include \
FFMPEGDecoder.cpp X264Encoder.cpp MP4Controller.cpp FAACEncoder.cpp -lz \
/usr/local/hoge/lib/libmp4v2.a \
/usr/local/foo/lib/libavformat.a\
-L../hoge/lib -lfaac
FFMPEGについて
FFMPEGは、その多用な機能からインストール時にいろいろと厄介な面があります。例えば、
--enable-mp3lameとしてビルドしている場合、ライブラリをリンクする際に、-lmp3lame
などと付け足さないとコンパイルエラー(リンクエラー)になります。mp3lameは付属
のMakefileではリンク候補としていますが、プロジェクト自体では利用していません。
Jamによるビルドを用いると外部ライブラリに依存しないようにmakeしますので、mp3lameや
libz.dylibなどは必要になりません。
また、make installではライブラリのインストールが行われませんので、make installlibと
してライブラリをインストールしてあげる必要があります。
最後の注意点として、FFMPEGでは現在のCVSにおいて、構造体などの定義が若干変更されています。
このプロジェクトのソースでは、最新のCVSに対応するようにコーディングしていますので、
ライブラリにもなるべく最近のソースからビルドされたものを利用してください。
|