2006年05月27日

mencoderとx264cliをパイプする(其の弐)。

【タグ】[MEncoder][x264cli][パイプ]

1. 前 回の あらすじ
mencoderを単なるmpeg2デコーダ・兼・ビデオ フィルタとして使い、その出力をmkfifoを使って、x264cliにパイプできれば、mencoder をAviSynth(フレームサーバ)の代用に使う事ができるのではないか?
x264cliはmencoderやffmpegより新しいため、事前にgpacをビルドしてあれば直接.mp4出力が可能だ。

2. やってみた。
#!/bin/bash
# Version 060526 charset="UTF-8",LF

mkfifo stream
mencoder \
~/Movies/TEST/KERO_OP.mpeg \
-nosound -ovc raw -of rawvideo \
-vf pullup,softskip,crop=720:480:0:0,scale=640:480,hqdn3d=4:3:6,pp=l5,harddup,format=i420 \
-sws 9 -o stream \
& x264 \
--bitrate 1024 --bframes 2 -o ~/Movies/TEST/KERO_OP.mpeg.264 \
stream 640x480
rm stream
動いた。gpacはビルドしてないのでrawvideo の.264で出力。
x264は core:47 svn-527。
  1. "mkfifo stream"で"stream"という名前のパイプを作り、
  2. mencoderでビデオフィルタだけかけて"stream"に書き出す(ファインダ上に"stream"というファイルができ る)。
  3. 書き出した端からx264cliがエンコードする("stream"は最後まで0kbのまま)。
  4. "stream"は最後に削除。
これで中間生成物抜きでrawvideo.264ができた。

3. まとめ
 ffmpegに比べるとmencoderのフィルタ機能 は強力で、比較的枯れている。フィルタ機能だけを使うなら、filmdintの安定したffmpegX0.0.9s版でも十分だろう。x264cliは機 能がx264に絞り込まれているためmencoder/ffmpegより落とし穴が少なく、ビルドも比較的優しい。

 反面、これでもmp4boxでmuxするとやはり冒頭にdelay frameが入る。ffmpegX0.0.9w版で試したもの(fps指定付き、.mp4出力)はなぜかfpsも画質もめろめろだった。

4. To Do
  1. rawvideo.264段階でのdelay frame除去。
    • nullフレームとかゼロバイトフレームとか言うらしい。ヘッダだけで中身の無いIフレームであるらしい。ならばコマンドラ インでフレーム番号指定してカットするツールがあるかもしれない、、、HexEdit?
  2. gpac(mp4boxを含むMPEG4オーサリングツール群)のビルド。
    • x264cliで直接.mp4出力するために必要。
  3. mpeg2 decoding delay対策
    • mkfifoでパイプを複数作れば、デコードだけmovtoy4mなどQuickTime系に任せる事も可能?
posted by ばる at 00:00| Comment(0) | TrackBack(0) | x264 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。