Javaでエンコードするソフトを作る(1)

目標:GUIでTSファイルを読み込み、各種フィルタ処理をしたH264+LC-AACのMP4ファイルを作る

まずは構成を考える。と、その前にEclipseの環境構築から。


Windows7のx64なのでどうせならEclipseもJavaも64ビットにしたいので、ちょっと検索すると以下のブログにそれらしい記述を発見。


JDKの方は公式から簡単に64ビットものが見つかるのでよかったが、Eclipseの方は見つけづらかった。
取り合えず見つけたのでダウンロードページに直リンク。


落として解凍して起動してプロセスが64ビットで動作しているのを確認した。

んでここのdownloadから日本語化ファイルを落として設定。

eclipse.iniに「javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar」を追加して-cleanオプションつけてEclipse起動。無事日本語化されていた。

んで取り合えずGUIを作りたいのでそれ系のプラグインが必要。
Wikiを見てみるとVisual Editerが標準のようだが、何か開発止まってるぽい?のでJigloo GUI Builderを導入してみた。インストールは簡単だが、サンプルアプリを作ろうとすると動きはするのだが、色々エラーをはいて気持ち悪い。だが簡単に直ったので問題なし。

しかしサンプルを作ろうとするとDLLが追加される。どうやらSWTは環境依存のDLLを利用するらしい。しかもどうみても32ビットのDLLであるが大丈夫だろうか。まあ取り合えず動くのでよしとする。

んでやっと構成を考えるわけだが、必要なパーツは以下だろうか。
  • 各種操作をするGUI
  • GUIの下で動く本体
  • 入力プラグイン(映像、音声)
  • 各種動画にかけるフィルター
  • 出力プラグイン
これ系のエンコソフトは大体こういう構成になってるはず。

今自分でエンコしていて問題に思っているのはフィルター系が32ビットで動いていて何か気持ちが悪い点であり、X264に関しては既にx64で動くexeが出回っているので、これに対してフィルタリングされた映像ストリームをキックできれば充分。音声も32ビットNeroEncodeで問題ない速度であるのでこれもwavかませてキックすればいい。そして出来たものをMP4BoxでMP4にしてしまえばよい。これもただMuxするだけなので別に32ビットのものでいい。

またそもそもAvisynthを使ってみて思った問題はCMのカットについてである。
Trim関数でフレームをカットするとなぜか音声がカットされなかった。まあ単純に理解が足りないだけだが。Murdoccutterを使えばそもそもTrim自体が必要ない訳だが、何かフレーム単位で切れないと気持ちが悪いので元ソースのまま読み込みTrimでカットしようとしていた。
今は基本的にAviutlを使っているわけだが、こちらの場合は元ソースを読み込み始点と終点を指定してOP/Aパート/Bパート/EDの基本的に4回に分けてエンコをバッチで出力して生成したMP4を結合して作成している。

どちらの場合もプレビューを見ながらCMをカットしているわけだが、当然ながら表示が遅い。カットするだけなら元ソースのまま表示する必要はないんだからjpegか何かの連続画像に変換して切り貼りする仕組みを作りたい。カット専用のビューを別ウィンドウで開いてカットするようにするか。
フィルタリングされたプレビューも指定フレームだけを別ウィンドウで開けるようにすれば充分じゃないだろうか。
またCMカットなんか場面転換が明らかなのである程度サーチが可能な気がするのでそれも考えてみたいところ。Aviutlで使ってる時間ジャンプも凄い便利なのでこれもほしい。

そういう風に考えるとGUIのビューとしては非常に簡単にならないか?
表示されている情報は「参照しているソース」「使用しているフィルタ」「出力先」くらいか。

0 コメント:

コメントを投稿