wine + Murdoc Cutter + avconvでCMカット
さて、環境がLinuxに変わりTSファイルのエンコードが少し難しくなった。
Avidemuxは未だにAACの音源をTSファイルと同期させて編集することができないくさいので、よいTSファイル編集ツールがないのだ。
WindowsではMurdoc CutterかHDTVtoMPEG2が最良の選択に思える。これらは当然wineで動作する。誰かHDTVtoMPEG2を元にしてLinux用のアプリ作ってくれないかなあと思っている。HDTVtoMPEG2のソースコードは以下にある。作者さんは趣味でこれを作ったみたいだ。
Index of /~balazer/HDTVtoMPEG2
Murdoc Cutterのソースコードは公開されていないが、多分HDTVtoMPEG2を元にしているんじゃないかと私は邪推する。そしてHDTVtoMPEG2はまったくライセンスのことが書かれていない。こういうのはダメだなあと思う。
OpenJane*1しかり、2000年代のフリーウェアはライセンスに対する意識が希薄だったように思う。そのせいで、せっかく作ったソースが簡単に流用されてしまったりするわけである。
wine環境の準備
私はDebian wheezyを使用しているが、パッケージのwineは結構古い。有志が以下の場所でパッケージを準備しているので、それを使うのが一番良いと思う。
Directory listing | Wine (wine-unstable) packages
一応以前ビルドもしているので興味がある方はどうぞ
Debianでwineの最新版をビルド - なんとな~くしあわせ?の日記
Murdoc Cutter
公式サイトからzipをダウンロードし、wineのdrive_c以下に入れておけば動く。
It's a Direct
avconv
どうもffmpegは非推奨パッケージになるらしく、avconvを使わなければいけないらしい。
しかし試しにTSファイルを食わせてみたところ「could not find codec parameters」というメッセージが出てavconvが終了してしまう。う〜ん、この。
追記1:
libavはバギーだから最新版使えばいいよみたいな書き込みがあったので、とりあえずビルドしてみる
1.リポジトリを追加する
# vim /etc/apt/sources.list // この行を追加 + deb http://www.deb-multimedia.org wheezy main non-free
2.足りない材料をリポジトリから取得する
# apt-get install libx264-dev libmp3lame-dev libfaac-dev
3.libavをリポジトリからクローンする
libavのリポジトリ一覧はここにあります:Get Libav
前回Fedoraでビルドしたコンフィグを参考にしつつ
ffmpegをまたコンパイル - fedora15で - なんとな~くしあわせ?の日記
また、CPUごとの最適化をここを参考に行います
[Phoronix] AMD Piledriver/Trinity A10-5800K Compiler Tuning
$ git clone git://github.com/libav/libav.git $ cd libav $ ./configure --enable-libmp3lame --enable-nonfree --enable-gpl \ --enable-libx264 --enable-libfaac \ --extra-cflags="-march=k8, -march=k8-sse3, -march=barcelona, \ -march=bdver1 -fno-strict-aliasing" \ --arch=x86_64 --enable-small --enable-memalign-hack $ make $ make install
-
- prefixを設定せず、デフォルトでmake install すると、libavは /usr/local 以下に格納される。まあこれはAutotools知ってれば当たり前のことですが。後述のプリセットもそこ以下に入れる必要がある。
案外サクッとビルド出来て終了。「could not find codec parameters」のエラーも出なくなって大満足ですね。
いつものプリセット
いつものプリセットを使いたいのだけれど、また少し変更しなければいけなかった
もうffmpegではないので、プリセットの名前自体違う。
参考:ffmpeg で TS をできるだけ高画質な mp4 へ変換してみた - I’m just another TeXnician.
# libx264-hq-ts.avpreset level=41 coder=1 flags=+loop cmp=chroma me_method=umh subq=7 me_range=16 g=250 keyint_min=25 sc_threshold=40 i_qfactor=0.71 b_strategy=1 qmin=10 rc_eq='blurCplx^(1-qComp)' bf=16 bidir_refine=1 refs=6 ec=deblock
上のプリセットのファイルを /usr/local/share/avconv/libx264-hq-ts.avpreset として保存。
エンコード実行!
$ ~/git/libav/avconv -y -i Namiuchigiwa_no_Muromi_san_#01.ts -f mp4 \ -c:v libx264 -pre libx264-hq-ts -r 30000/1001 -aspect 16:9 -s 1280x720 \ -bufsize 20000k -maxrate 25000k -c:a libfaac -ac 2 -ar 48000 -b:a 128k \ -crf 25 -threads 4 -partitions parti8x8+parti4x4+partp8x8+partb8x8 \ Namiuchigiwa_no_Muromi_san_#01.mp4
これで環境構築からエンコード実行までバッチリですね。はい。
エンコードの成績
元ファイルサイズ :1.5GB
エンコ済みファイルサイズ:109MB
圧縮率 :7%
圧縮時間(秒) :734.29