「1Mbpsで6秒だから、だいたい750KBだな」。そう思って書き出したら、2MBのファイルが出てきました。
このサイトの圧縮の道具を作っているときに測った数字です。6秒のクリップを、映像900kbps・音声96kbpsで要求しました。単純に掛け算すれば約725KB。出てきたのは2.0MB、要求の2.8倍でした。
ビットレートは上限ではなく、希望
原因ははっきりしています。ブラウザの録画機能に渡すビットレートは、上限ではなく希望値だからです。先読みをしないので「このあと3秒間は動きが激しいから、いまのうちに節約しておこう」という判断ができません。目の前のフレームを、指定された品質で置いていくだけです。結果として、動きの多い場面では希望を上回ります。
専用の動画編集ソフトが指定どおりの大きさに収められるのは、映像を先に2回通しで見て(2パスエンコード)、どこにデータを厚く配るかを決めてから書き出しているからです。ブラウザの中で、再生しながらその場で録っている仕組みには、その余裕がありません。
だから「見込み」は多めに出している
画像・動画の圧縮では、処理を始める前に「だいたいこのくらいになります」という見込みを出しています。この見込みは、意図的に多めに外すようにしてあります。画像でも同じで、実測で221KBと予測した高精細な画像が実際には385KBになったので、1.3倍を掛けて出しています。
理由は単純で、見込みより小さく仕上がったことに文句を言う人はいないからです。逆に「1MBになります」と言って1.5MBが出てきたら、それはうそをついたことになります。どちらかに外すしかないなら、外す方向は決まっています。
それでも、目標を超えていないかは出来上がったファイルを実際に測って確かめています。計算だけで「収まりました」とは言えないので、超えていればもう一度詰め直します。
では何を動かすのか
ビットレートの数字を下げるより、先に効く順番があります。
- 尺を削る — 容量はおおよそ「1秒あたりのビット数 × 秒数」です。10分の動画を20MBに収めるのと、必要な2分だけを20MBに収めるのでは、後者が5倍のビットレートを使えます。いちばん効きます。
- 解像度を下げる — 1080p を 720p にすると、必要なビットレートは半分以下になります。スマホで見るだけなら720pで足ります。
- フレームレートを落とす — 最後の手段です。動きが不自然になるわりに、削れる量は多くありません。
尺を削るのは音声のカット・結合や動画編集ソフトの仕事で、解像度は圧縮の道具で「送り先」を選べば自動的に決まります。数字そのものをいじるより、目的を選ぶほうが早く着きます。
もうひとつ、変えられないこと
ブラウザの中での動画の再圧縮は、実時間かかります。10分の動画なら10分です。再生しながら録っている仕組みなので、再生を2倍速にしても縮みません——録る側は壁の時計を見ているので、2倍速で再生すれば2倍速の動画が録れるだけです。
ここは道具の画面にも先に書いてあります。待ち時間が長いこと自体は直せませんが、始める前に分かっているかどうかは別の話なので。
この記事で紹介したステム分離は、ブラウザで無料で試せます(登録不要・音源は端末から出ません)。