index

2007年 4月
              1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
  30            
2007年 5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
2007年 6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

アレ

H.264 で interlaced=1 なら縦サイズは 32 の倍数に.   ▽20070516a #コンピュータ #動画圧縮

最近じゃ地上波の番組もかなりの割合で 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 のパワー不足で再生できねーんですがね ( ´ω`)

index