動画のエンコードを出来るだけ高速化する方法【エンコが遅い】

このページでは、動画のエンコードを出来るだけ「高速化」する方法について簡単に紹介したいと思います。

※見易いように箇条書き形式で列挙します

スポンサードリンク

1.動画編集時点での高速化設定

基本的にはAviUtlの話を中心に書いてますけど、(一応)他のエンコードソフトでも言える事です。

①フレームレートを下げる

fpsを下げれば下げるほど、エンコード時間は縮まります。

60fps動画だと30fps動画の単純に2倍時間が掛かります。

極端な話、フレームレートがほぼ不要な動画とかなら1fpsとかでもOKです。めちゃくちゃ早くなります。

Youtubeとかに音楽ファイルに擬似的に映像を付けてをうpする場合とか

②重いフィルタをOFFにする

例えば「シャープフィルタ」とか「ぼかしフィルタ」とかは動画全体に処理を掛ける必要が有るので、エンコ時間は伸びます。

エンコ時間を縮めたい場合は、掛けても掛けなくても大差ないフィルタは外しましょう。

③ビットレートを下げれるフィルタを使う

例えば「ノイズ除去フィルタ」とかを上手く使用すれば、ブロックノイズを減らす事が出来るのでビットレートを割り当てる量を低く出来たります。

結果的にエンコ時間が縮まります。

④重いエフェクトは使わない

プレビューの際に重くなるエフェクトを使えば使うほど、エンコード時間は伸びます。

例えば「閃光系」「ブラー系」「ノイズ」エフェクトとかは使うだけで激重になります。

⑤カメラ制御は使わない

カメラ制御は基本的に重いので、使用するだけでエンコードがかなり遅くなります

⑥スクリプト化出来る処理はスクリプト化する

動画内で何回も繰り返すような処理の場合は「スクリプト化」した方が、エンコードが早くなります(早くならない場合もありますが)

2.エンコード設定の注意点

これはどのエンコーダーを使用しても言える事ばかりなので、有料動画編集ソフトを使用している場合などでも有効です。

①ビットレートを下げる

ビットレートが高いほど、エンコード時間は伸びます。

画質にそこまで拘らないなら、ビットレートを下げる事でエンコード時間を縮めれます。

②コーデックがマルチスレッドに対応している場合は「マルチスレッド」機能をONにする

コーデック自体にマルチスレッド機能が有る場合はONにしときましょう。

Lagarith-Lossless-Video-Codec_設定画面
▲こういうの(Lagarith Lossless Video Codec

AviUtlの場合は、マルチスレッドに対応していないコーデックでも「AVI出力(マルチスレッド) versionX.XX」プラグインを使用すればマルチスレッド化出来るかもしれません。

③エンコードが早いコーデックを使用する

例えば可逆圧縮系で言えば「MLC」とかより「Ut Video」とかを使うようにします。

例えば非可逆圧縮系で言えば「WMV Plus」とかより「x264guiex」を使うようにします。

④「圧縮率」より「エンコード速度」重視の設定に変更する

これもコーデック自体の設定です。

UT-video_設定画面1
▲こういうの(Ut Videoコーデック

圧縮率は落ちますが、エンコード・デコードの速度が上がります。

⑤AviUtl自体の優先度を上げる

AviUtl自体の「優先度」を変更する方法です。

「ファイル」→「環境設定」→「優先度」で「Realtime」とかに変更したら若干早くなります。(タスクマネージャーで「優先度の設定」をするのと同じ効果です)

ただし、優先度を上げれば上げるほど、他のPCソフトが異常に重くなります。

⑥CPUを高性能な物に換装する

元も子もないですが、CPUを高性能なものに換装するのが一番手っ取り早く、一番効果が有ります。

CPUがクソだとどんなに頑張ってもエンコ時間は縮まりません。

おすすめ動画編集向けパソコンの選び方

⑦2passでエンコしない

2passでエンコードすれば、ビットレートの損失は最大限抑える事は出来ますが、1passの2倍くらい時間が掛かります。

「品質」指定でエンコードすれば、ビットレート損失は殆ど無いので、出来れば1passでエンコしましょう。

⑧CBRでエンコする

「ファイルサイズ当りの画質・音質」が低くなりますが、「CBR」でエンコードする事で、「VBR」や「ABR」より多少早くなります。

でもあまりおすすめしません。

⑨その他

例えが変ですが、「自分がエンコーダーだとしたらどのような動画がエンコードしやすいか」を考えれば、おのずと分かるかと思います。

動画全体にシャープフィルタを掛けるなんて、エンコーダー側からしたらどう考えても面倒臭い処理ですからね。

3.GPUによるハードウェアエンコードで高速化する技術(GPGPU)

「CPU」や「グラフィックボード(以下、グラボと呼ぶ)」に付属している「GPU」の機能を借りて、動画をエンコードする方法です。

CPUでエンコードするより早くエンコード出来るようです(?)

※私の環境では試せないので断言できません

GPGPUって?

cuda

最近の「CPU」や「グラボ」には、「ハードウェアで動画をエンコード・デコードする機能」が備わっています。

今までは、「ディスプレイに映像を表示」(グラフィックボードを搭載している場合はグラフィックボードが行う)したり、「動画をエンコード・デコード」するのは、「CPUの演算機能」だけで行っていました。

なので、「処理が重いゲームなどをプレイ」したり、「解像度の高い(orビットレートの高い)動画を再生」したりすると、直接CPUの使用率に影響していました。(性能の高いCPUを使用している場合、そんなに影響は無いけど)

しかし最近は、超高解像度のゲーム・動画が主流になってきたりして、低性能なCPUではまともにゲームをプレイ・動画を再生が出来なかったりします。(低スペの人はYoutubeとかで1080pの動画を観れば実感出来るかと思います)

こういう事を加味して、最近のCPUとかグラボでは「CPUとかグラボに直接、ディスプレイに映像を表示する機能を付けたり、動画をエンコード・デコード出来る機能付けたら、CPUの負荷を減らせるんじゃないの?」っていう考え取り入れられ、こういう機能がデフォルトで備わるようになっています。(なので低スペックなPCでも高解像度の動画を再生出来たりするのです)

このような機能を利用して、動画をエンコードする技術の事を「GPGPU」と呼びます。

GPGPUの呼び名

GPGPUの呼び名はメーカーによって異なります。以下の様な感じです。

  • IntelのCPU
    • QSV
  • nVidiaのグラボ
    • CUDA(単にグラボの力を借りるだけ)
    • NVEnc(グラボの中のエンコード専用部分の力を借りる)
  • AMDのグラボ
    • VCE

普通のエンコードに比べて、「ビットレート当りの画質」が悪かったり、変なノイズが入ったりと、ソフトウェアでのエンコードには到底叶わないみたいですが、「エンコードさえ出来れば何でも良い!」という人や「とにかく早くエンコードを終わらせたい!」という人には需要があるようです。

あと、使用する為に、色々制約があったりしてパソコン初心者の人は確認するのが難しいかもしれません。(QSVはSandy以降のCPUじゃないとダメとか色々ある制約が有る)

AviUtlでハードウェアエンコードする方法

AviUtlでは、x264guieExプラグインでお馴染みの「rigaya」氏のブログから、ハードウェアエンコード専用のプラグインが幾つか公開されています。

  • QSV用プラグイン:QSVEnc
  • NVEnc用のプラグイン:NVEnc
  • VCE用のプラグイン:VCEEnc

rigayaの日記兼メモ帳(右サイドバーから全てダウンロード出来ます)

ちなみに私のパソコン環境的は、QSVに対応しているCPUを使用しているのですが、チップセットがP67な為にQSVは使えません。。

あと、グラボも一応「Radeon」の奴を付けてるには付けてるのですが、VCEに対応していないしょぼい奴なので使えません。。

というわけで、どれも試す事が出来ないので記事に出来ません。。\(^o^)/

追記:

QSVでエンコできる機会があったので記事追加しました

【AviUtl】QSVを使用してハードウェアエンコードする方法【QSVEnc】

このページの情報は以上です。

スポンサーリンク