2006年06月19日

yadifで60fps

【概要】-vf yadif=1を使って、1フィールドを1フレームにしてみる。
【タグ】[インターレース解除][MEncoder][yadif=1][60fps]

NHK 衛星第一:2006FIFA ワールドカップ・デイリーハイライト(約45分。06/06/11放送)

 素材的には「デイリーハイライト」だが、名選手の過去の映像なんかもふんだんに入っている。つまり、PALの毎秒50000/1001フィールド素材を NTSCの毎秒60000/1001フィールドに直して放送した部分があるハズ。ナレータの背後に出るCGなんかは30fps制作であろうし、NTSCカ メラで撮った部分は毎秒60000/1001フィールドであろ〜、、、、書いててなにやってんだおいらと言う気がしなくは無いが、NHKだからきちんとお 金と手間かけて編集してるような気もする。
 x264encoptsの設定は60fps、900kbps。High Profileの為、QuickTime Player 7では視聴できない。

===MENCODER_PASS1===

mencoder FifaWorldCupHighLight0611.mpeg -nosound -ovc x264 -x264encopts threads=2:bitrate=900:qp_min=10:qp_max=51:b_adapt:bframes=2:keyint=300:scenecut=55:cabac:deblock:direct_pred=3:qp_step=4:qcomp=0.6:psnr:pass=1:me=2:subq=2:frameref=1:no8x8dct:noi8x8:8x8mv:nob8x8mv:noi4x4:no4x4mv -passlogfile FifaWorldCupHighLight0611.264.log -vf yadif=1,crop=720:480:0:0,scale=640:480,hqdn3d -sws 9 -fps 30000/1001 -ofps 60000/1001 -of rawvideo -o /dev/null

x264 [info]: using SAR=1/1
x264 [info]: using cpu capabilities Altivec
x264 [info]: slice I:699 Avg QP:28.83 size: 21732 PSNR Mean Y:38.70 U:43.34 V:44.59 Avg:39.81 Global:38.99
x264 [info]: slice P:68105 Avg QP:30.85 size: 3215 PSNR Mean Y:36.60 U:42.17 V:43.30 Avg:37.82 Global:36.82
x264 [info]: slice B:92972 Avg QP:32.15 size: 730 PSNR Mean Y:36.48 U:42.40 V:43.47 Avg:37.74 Global:36.76
x264 [info]: mb I I16..4: 41.3% 0.0% 58.7%
x264 [info]: mb P I16..4: 8.0% 0.0% 0.0% P16..4: 27.5% 9.3% 2.3% 0.0% 0.0% skip:52.9%
x264 [info]: mb B I16..4: 0.3% 0.0% 0.0% B16..8: 7.2% 0.0% 0.0% direct: 4.2% skip:88.3%
x264 [info]: final ratefactor: 28.99
x264 [info]: direct mvs spatial:41.0% temporal:59.0%
x264 [info]: PSNR Mean Y:36.538 U:42.306 V:43.405 Avg:37.779 Global:36.795 kb/s:895.32

Video stream: 598.547 kbit/s (74818 B/s) size: 302902984 bytes 4048.511 secs 80890 frames
SEC ; 12884(6.28fps)
TIME; 3:34.44

===MENCODER_PASS2===

mencoder FifaWorldCupHighLight0611.mpeg -nosound -ovc x264 -x264encopts threads=2:bitrate=900:qp_min=10:qp_max=51:b_adapt:bframes=2:keyint=300:scenecut=55:cabac:deblock:direct_pred=3:qp_step=4:qcomp=0.6:psnr:pass=2:me=3:subq=7:frameref=4:8x8dct:i8x8:8x8mv:b8x8mv:i4x4:4x4mv:nofast_pskip:weight_b:trellis=1:ratetol=4:mixed_refs:brdo:bime:deblockalpha=-1:deblockbeta=-1 -passlogfile FifaWorldCupHighLight0611.264.log -vf yadif=1,crop=720:480:0:0,scale=640:480,hqdn3d -sws 9 -fps 30000/1001 -ofps 60000/1001 -of rawvideo -o FifaWorldCupHighLight0611.264

x264 [info]: using SAR=1/1
x264 [info]: using cpu capabilities Altivec
x264 [info]: slice I:699 Avg QP:27.45 size: 23344 PSNR Mean Y:39.95 U:43.89 V:45.16 Avg:40.97 Global:40.08
x264 [info]: slice P:68105 Avg QP:30.32 size: 3201 PSNR Mean Y:37.80 U:42.75 V:43.90 Avg:38.94 Global:37.85
x264 [info]: slice B:92972 Avg QP:31.45 size: 745 PSNR Mean Y:37.68 U:42.95 V:44.07 Avg:38.86 Global:37.77
x264 [info]: mb I I16..4: 27.3% 51.4% 21.3%
x264 [info]: mb P I16..4: 5.7% 4.0% 0.4% P16..4: 36.1% 7.5% 2.9% 0.1% 0.0% skip:43.2%
x264 [info]: mb B I16..4: 0.1% 0.2% 0.0% B16..8: 16.6% 0.4% 0.9% direct: 0.7% skip:81.1%
x264 [info]: 8x8 transform intra:41.2% inter:68.8%
x264 [info]: direct mvs spatial:43.1% temporal:56.9%
x264 [info]: ref P 73.9% 14.8% 8.3% 3.0%
x264 [info]: ref B 72.8% 13.9% 8.1% 5.2%
x264 [info]: PSNR Mean Y:37.739 U:42.867 V:44.004 Avg:38.904 Global:37.811 kb/s:899.85

Video stream: 601.549 kbit/s (75193 B/s) size: 304422473 bytes 4048.511 secs 80890 frames
SEC ; 25680(3.15fps)
TIME; 7:8.0
45分の番組にトータルで10時間40分あまり(PPC G5 2.0Ghz x 2)。処理すべきフレーム数が倍なので、どえらい時間がかかった。結果ビットレートはx264がほぼ指定通りの値を示しているのに対し、MEncoderは随分低い値を出してい る。、、、なにかコマンドを間違ってるのかもしれない。
  なお、映像ビットレートはMPlayerでも0.0kbpsと出るので、「正しい」AVC/H264.mp4ではないようだ。
$ mplayer FifaWorldCupHighLight0611.mp4
MPlayer dev-SVN-r18740-4.0.1 (C) 2000-2006 MPlayer Team
AltiVec found
CPU: PowerPC


Playing FifaWorldCupHighLight0611.mp4
Quicktime/MOV file format detected.
VIDEO: [avc1] 640x480 24bpp 59.940 fps 0.0 kbps ( 0.0 kbyte/s)
 VLCのinformation表示では、再生中のstaticが400〜1400kbpsの間を行き来する。
、、、ここまで書いて-vf 末尾にharddupを忘れてる事に気付いた^^;、が、特に音ずれは感じなかった。

ま、そのへんはともかく。インタレ解除性能はどんなもんだったかと言うと、、、。


*200% 表示、MPEG2キャプチャ
 ゴール前の競り合いなどは約1/60秒でこれだけ動いている。
 他に、パスされたボールを追ってカメラがパンなどしようものならめろめろだ。
 つまり、コマ送りで見るとずっとこの調子。

*200% 表示、x264.mp4
60fps、映像指定900kbps。
 yadif =1で、1フィールドから1フレームを生成するとこんな感じになった。pp=lbやpp=l5のようなゴーストが結構残る。ただし通常視聴では特に目には 止まらない。

 ビットレートを厳しくしたのでブロックノイズだらけ。これは通常視聴でも一瞬目に入る。ビットレートはx264の表示を信じるなら899.85だが、 MEncoder側の表示は601.549だ。 

 ふだん色味は無視しているのだけれども、ならべると随分違いますな。

 「動きの滑らかさ」は素材に遜色が無い。
 なお、前回の実験では字幕にfilmdint状のブロックノイズが載ったが、この素材では特にそうした事は無かった。

 映像ビットレートが899なのか601なのか判然とせず、レートコントロールには疑問が残る。avg QP(P)も30以上と高いものの、主観ではまぁまぁ見れる画質だった。
 細部の画質より動きが重要な素材で「なぁんか動きがつっかかるなぁ、、、」という場合に使うのが妥当と思われ。

まとめ


映画カメラ撮影素材(24000/1001fps)では-vf pullupが定評がある。映画と、CGを使わない手書きアニメはほぼこれで済む。
TVカメラ撮影素材(毎秒60000/1001フィールド)では、以下の2種類のアプローチがある。
2フィールドから1フレームを合成する方法。
pp系、filmdint=io=2997/2997、 yadif=0(未試用)など。
もともとカメラで撮影した時点でスダレ状のインターレースドなので、わずかでも動きが有ればかならずシマシマが出る。シマシマを「誤摩化す」手法は様々 で、それぞれに固有の副作用がある。完全にキレイなフレームにするのは不可能。さらに、動きの滑らかさも半減する。
ffmpegX版MEncoderでは長くfilmdint=io=2997/2997を愛用していたが、0.0.9s版を最後に動作がおかしくなった。 手許でビルドしても同様。

1フィールドを1フレームにする方法。
tfields、yadif=1、mcdeintなど。
どうせ完全にキレイなフレームを手にする事ができないなら、60fpsで動きの滑らかさを優先的に残そうというもの。
tfieldsはやや古く、mcdeintは性能はよいが激遅で、フィールドオーダーの自動検出が無いなどまだ開発途上だ。
現時点ではyadif=1でビットレートを潤沢にあたえるのが妥当と思われ。
posted by ばる at 00:00| Comment(0) | TrackBack(0) | mencoder[コマンド] | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

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

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

コメント: [必須入力]

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


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

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

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