HandBrakeを使って動画データのファイルサイズを圧縮する

僕はPiwigoを使って飼っている犬のアルバムを作っていて、動画に関してはYouTubeにアップロードしたものを転載する形で管理していました。

ただ、YouTubeというサービスに依存する形で管理するのはいかがなものかとずっと引っかかっており、やはりVideoJSプラグインを使用して直接アップロードする形を取ろうと考えました。

その時に問題になるのが動画のファイルサイズ。撮影したデバイスによって異なりますが、短い動画でも数百MBのものもありました。サーバーの容量を圧迫するし、通信量も大きくなるので、極力圧縮をかけたいところ。

写真はSILKYPIXという画像編集ソフトを使って一斉に圧縮をかけているのですが、動画ファイル用に何かないかと探したところHandBrakeが良さそうでした。

なんか過去に使ったことがあるなぁと思ったら、DVDを動画データにリッピングするのに使ったことがありました(ちゃんと版元に許可をもらった上で)。動画データの圧縮もできるんですね。

そういうわけで、効率よく動画データを圧縮するためのHandBrakeの使い方と設定方法をまとめておきます。

HandBrakeのインストール

HandBrake: Open Source Video Transcoder
HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder.

こちらからダウンロードしてインストールします。

起動するとこんな感じで圧縮したいファイルを放り込む画面になります。

複数のファイルを一括で行う場合はフォルダを選択します。

ファイル選択をする前に、下の方に小さくある「設定」から基本設定を行います。

といっても変換後のファイルの保存先ぐらいですかね。

変数を利用して下記のように指定します。

{source_path}\HandBrake

これで元のファイルがあるフォルダの中に「HandBrake」というフォルダを作成して、その中に変換ファイルを作成します。オリジナルデータとは明確に分けた方がいいです。

ファイル名規則については、下記のようにしておけば元のファイル名で作成してくれます。

{source}

動画データの圧縮

試しに動画データを一つ圧縮してみます。圧縮前は137,038KBの容量でした。

設定する項目がさまざまあり、どこをいじればわからんのでとりあえずプリセットから理想に近いものを選んでそれをカスタマイズするという感じになります。

とりあえず既定のプリセットである「Fast 1080p30」でやってみます。

変換スタートからしばらく時間を要します。動画のエンコードは結構マシンパワーを食うので、できればパソコンでのマルチタスクはやめてスマホとか本を手元に用意して終わるまで待つのが良さそうです。

こちらが圧縮後。33,139KBということで、7割近くの容量削減に成功しました。

しかし、これは画質がかなり劣化してしまう、あまりよくない変換となってしまいました。

「Fast」のプリセットではフレームレートが30の固定で設定されており、これよりも多いフレームレートだとかなり動画がカクカクになってしまいます。

というように、もう少し設定をチューンアップする必要がありそうです。

ちょうどいい設定を探す

Webサイトに動画を埋め込む際のサイズと軽量化方法 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
Webサイトに動画を埋め込む際、動画をどのぐらいの容量にしていますか?また、軽量化する際はどのような方法でやっていますか?今回は動画の容量の目安とHandBrakeというツールで軽量化する方法をお伝えします!

このページがしっかり説明してくれています。

ただ、ここで紹介されているのは画質良いめ設定で圧縮率は控えめ。

どうせやるならがっつりサイズを落としたいということで、いろいろ試した結果以下の通りになりました。

「Fast」のプリセットをベースに変えていきます。

概要の項目は「Web用に最適化」にチェックを入れました。これだけです。

動画のタブでは、フレームレートを「Same as source」に変更。これで元の動画データと同じフレームレートになりました。

品質は固定のまま23RFに。元は22でして、推奨値が20~23だったので最も低品質の23で。

エンコーダーオプションはFastからVeryfastに変えました。

これで完了。動画もそこまで見た目に影響はなく、エンコードの時間も短くなりました。

圧縮の結果

複数の動画を圧縮してみました。まずはビフォー。

そしてアフター。

見比べるとわかるのが、サイズが小さくなっているものと大きくなっているものの両方があること。

変換したからといって必ずしもサイズが小さくなるとは限りません。元の動画データのクオリティによってはむしろサイズが大きくなってしまう場合があります。

また、動画データは非可逆圧縮のため、サイズが大きくなったからといって画質が良くなることはありません。

写真データについても同じことがいえるのですが、動画データは数MBの違いが出てくるので、実際に使用するデータはサイズが小さい方を選別した方がいいですね。

コメント

コメントする前にお読みください

プログラミングに関する質問について、詳細なコードはお答えしませんのでご了承ください。
また、迷惑コメント防止のために初回のコメント投稿は承認制です。投稿が反映されるまで少し時間がかかります。