nicolish!

ビットレート、フレームレート

最終更新:

nicolish

- view
管理者のみ編集可

ひとつ上のうp主になる02

ビットレート、フレームレート

01.ビットとバイト

100kbと100kBでは、まったく意味が異なるんだよ。まずはこの辺から。

コンピュータの世界では、データを0と1で表す。どっかで聞いた事がある人も多いと思う。
この「0か1か」というのを示す基本単位がビット

1ビットあると、0か1か、オンかオフか、2通りの情報を表現できる。
2ビットあれば00,01,10,11で4通り。3ビットなら8通り。
xビットで、2のx乗通りの情報を表現できるわけ。

8ビットをまとめて1バイトと呼ぶ。ある程度まとまってた方が取り扱いに便利だからね。
1バイトは256通りのデータを表現できる。
たとえばアルファベットの文字は1バイトあれば余裕で表現できる。

どっちのが良く使うかというと圧倒的にバイト。
だから、「ファイルサイズが40キロ」と言われたら、ほぼ間違いなく40キロバイト。

バイトはB、ビットはbで示す決まりになってる。つまり8b=1B
大文字と小文字なんて紛らわしい表現を考えた奴にはちょっと殺意を覚えるが、まあ仕方ない。

ついでにキロについても。
1kmといえば1,000mのこと、普通キロといえば1,000のことだ。

でも、コンピュータの世界では、キロと言えば1024の事を示す。
1024は2の10乗。コンピュータ上だとこっちの方が計算が楽なんだよね、と、そんだけの理由。
同じように、Mも1,000,000ではなく、1024*1024という意味。

で、見分けがつかないと不便なので、1024を大文字のK、1000を小文字のkで示す、という決まりが作られた。
けど、あんまり機能していないので、割とアテにならない。
(以下、この文章でもこの辺は無視し、断りの無い限りk=1024として計算しています)

コンピュータの世界ではよく使われるのはキロ=1024のほう。
特にビットやバイトに付いた時には、間違いなく1024を意味すると考えていい。
10キロバイト、と言ったら、それは10*1024バイト、10*1024*6ビットのこと。

ここまでのまとめ

  • 1ビット(1b)とは、「0か1か」の情報量のこと。
  • 1バイト(1B)は8ビット。
  • コンピュータの世界では、kと言えば1024。Mと言えば1024*1024。


02.ビットレートとは?

動画を作成する時に、ビットレートを「300kbps」みたいに指定すると思う。
これってどういう意味だろう、という話。

kbpsというのは、kb per secondの意味。和訳するとキロビット毎秒。
時間辺りのデータ量は、一般にビットレートと呼ばれる。動画に限らず)
300kbpsなら1秒辺り300kbという事。

つまり、300kbpsで記録した映像が600秒分あると、その大きさは
300 * 600 = 180,000 kb 。
8で割ってバイトに直すと22,500 kB。
kが1000か1024かよく分かんないけど、まあ22MBくらい。

もちろん音声も計算方法は同じ。
音声128kbpsならば、10分で128*600 = 76,800 kb = 9,600kB。
10MB弱だね。

ただ、音声の場合、モノラルに注意。
ビットレート64kbpsで、モノラルと指定してエンコードすると、32kbpsでエンコードするソフトがいくつも存在する。
ステレオ、つまり左右で64kbpsだから、片方分だと32kbps、という事らしい。
この辺はソフトのヘルプに書いてあると思う。

ここまでのまとめ

  • bpsは、ビット毎秒。時間辺りのデータ量は、ビットレートと呼ばれる。
  • bpsに時間をかける事で、出力の大きさ(ファイルサイズ)になる。
 ただしbとBの換算、kが1000なのか1024なのかには注意。


03.フレームレート


30fpsってどういう事よ?という話。
fpsとはframe per second、フレーム毎秒のこと。

フレームとは何かというと、1枚の絵の事と考えていい。
動画とは、パラパラ漫画のように、静止画が何枚も集まったもの。
この絵の一枚一枚がフレーム。

で、30fpsとは、1秒辺り絵が30枚ある、という事。10fpsなら10枚。
1fpsなら1秒に1枚しか絵が無いわけで、1秒ごとにカクッ、カクッ、と絵が動く動画になる。
時間辺りのフレーム数の事を、フレームレートと呼ぶ。

基本的に高ければ高いほど絵は滑らかに動く。

けど、あんま高くしても意味が無い。理由はふたつ。ちょっと脱線するよー。
ひとつ。
コンピュータのディスプレイは数十ミリ秒に1度くらいでしか更新されない。
応答速度、という数字で表現されるんだけど、イマドキの液晶ディスプレイで10-20msくらい。
つまり、50-100fps以上の動画をいくら作っても、ディスプレイがそれを表示できないので意味が無い。
ふたつ。
人間の目の方もあんまり性能が良くない。
1000fpsの動画と、それを表示できるディスプレイを作っても、人間の目には100fpsの動画との見分けがつかない。
どの辺が限界かは微妙な話になるけど、テレビアニメなんかは1秒8コマが標準的。
だけどきちんと動いて見えるよね。そんなもんなんすよ。
ハルヒのOPは驚愕の30fpsで描かれていて、だから低fpsに慣らされた目には異常に滑らかに見える。
ハルヒスゲェ!ハルヒはネ申!

えーっと、元に戻して。
要するに、あんまりフレームレートを上げても意味が無い。
単純な話、30fpsの動画は10fpsの動画の3倍くらい重くなるし。
(圧縮によりこの差は小さくなるけど、高fpsほど重いのは同じ)

ここまでのまとめ

  • fpsとは、1秒間に何枚の絵が入るかを示す単位
  • 時間辺りの絵の枚数のことを、フレームレートと呼ぶ
  • フレームレートを上げると滑らかになるが、容量も大きくなる


03.実践・ビットレート

直接数字を扱ったほうがイメージが湧くので、ここからは少し実践的な話で。

まず、ビットレート周りのsmilevideoの仕様から。
  • 映像+音声の平均ビットレートが600kbps以下
  • ファイルサイズ40MB以下
がファイルの制限。
これを超えると再エンコードされてしまう、つまりアウト。

ありそうな話として、まずは
「10分の動画を可能な限り高画質でうpりたい」
という場合を考ますか。
以下、基本的にキロは1024としま。

まずは計算が簡単な音声。
128kbpsならば、10分=600秒では
600 * 128 = 76,800kb = 9,600kB = 9.375 MB。
圧縮って多少バラつくんだけど、まあこの辺のサイズになるはず。

おなじように、ビットレートごとにファイルサイズを出すと
160kbps 11.7 MB
128kbps 9.4 MB
64kbps 4.6 MB
32kbps 2.3 MB

とりあえず音声を128kbps(9.4MB)としようかね。
映像は、40MB - 9.4MB = 30.6MB 以内に収めればいいわけだ。

30.6MB = 32,086,425 B = 256,691,405 b 。
時間は600秒なので、限界ビットレートは
256,691,405 / 600 = 427,819 bps
                 ≒ 418 kbps 。

同じように計算してみよう。
音声 映像ビットレート
160 kbps 386 kbps
128 kbps 418 kbps
64 kbps 483 kbps
32 kbps 514 kbps
考えてみれば当たり前だけど、音声と映像のビットレートの合計はどれも同じような数字。
どれも540kbpsくらいで、600kbps制限はクリアしてるね。

音質と画質はトレードオフ。
10分くらいだとまだ平気だけど、20分近くなるとかなりシビアになってくる。

どうやって容量を削るか?
ここまでの知識があるのなら、自分でどうするかの処理と、その結果を考えられるはず。

例えば、映像が30fpsだったのなら、これを10fpsにする。
(録画する時に下げちゃうのがいちばん簡単。動画編集ソフトでもフィルタでできると思う)
さすがに1/3は厳しいけど、ビットレートを半分に落としても同等以上の画質が確保できるはず。

fpsを落とすのは、エロg…アドベンチャーゲームのプレイ動画なんかに有効だね。
どうせ「紙芝居」だし、カクカクでも誰も困らない。
画像詰め合わせ動画や「描いてみた」なんかもfpsを落としても結構平気。
少し話が逸れるけど、フレームレートとエンコード時間はほぼ比例するので、エンコード時間短縮には非常に有効。

音声を切り詰めるのも有効。特に長い動画に良く効く。
160kbpsだった音声を32kbpsまで落とせば、映像のビットレートを160-32 = 128kbpsも上げられる。
ステレオ32kbpsはヤバいけど、モノラル32kbpsなら案外分かんない。
人の声のような、平坦な音程のものは圧縮効率が高いので自然に仕上がる。
(個人的にはモノラル40kbpsが限界、この辺は感性と好みの問題)
記事メニュー
目安箱バナー