最近じゃ地上波の番組もかなりの割合で HD(ハイビジョン)になってきましたね.CM とかもけっこう HD が増えてきたりとか.録画機材が出回り始めたんですかね?(前振り
ということで.まぁあたしはほとんど CS でモータスポーツしか見てないわけだが,モータスポーツ関係の番組は,10割くらいが SD で御座います.諸君私は SD が好きだ.PV3 で SD 動画を水平 960 でキャプチャした時など心がおどる.あーでも夏くらいから J Sport が HD 放映始めるらしい.wktk.
いや本題はソレではなくて.珍しく地上波でモータスポーツ関係の番組を HD で放映してたんで録画したんだけど,まぁ中継画面は SD 4:3 なのはおいといて,選手インタビューとかは HD 16:9 だったので HD でエンコしたいなーと思ったわけよ.
最初,ソースに合わせて 1440x1080 16:9 でエンコしてみました.もちろん再生できませんでした.ビデオマシンの E6600@3.2GHz でもカクカクだった.PureVideo HD とかだとイケるんですかね?
なので,せめて再生できるファイルも作っておこう,と,1280x720 16:9 で作ってみたら,なぜか正常に再生できない.interlaced=0 だと再生できるみたい.なぜだ.
と,この辺で思い出したのだが,「ffdshow とかの libavcodec では interlaced=1 の動画は縦ピクセルが 32 の倍数である必要がある」とか.どこで読んだか思い出せないのだが,たぶんこの辺で 32 単位での扱いにしてるのが原因じゃないかと推測.コード読んでないから全然違うかもだけどw
というわけで,1280x720 を 1252x704 にすると,正常に interlaced=1 で再生できました.しかしすっきりしねーピクセルサイズですねぇ?w
ちなみに.「フル HD」である「1920x1080」だと,縦サイズは 32 の倍数どころか 16 の倍数ですらなく,H.264 はスライスのサイズを 16x16 としてるんでこの辺どうなってんだろ,と思ったら,どうもエンコーダが気を利かせていて,「1920x1088,だけど 8px は crop して削って表示してねフラグ」を設定してくれてるらしい.1088 だと 32 の倍数なので interlaced=1 も問題なしってわけだ.まぁ PC のパワー不足で再生できねーんですがね ( ´ω`)