「動画編集」カテゴリーアーカイブ

エンコードにGTX1060

動画エンコードのメモ

現在録画データの保管用に エンコードソフトとしてペガシスTMPGEnc Video Mastering Works6を使用している

録画データのMPEG2をMPEG4(H.264/AVC)にエンコードしていて フィルター処理の補助としてNVIDIA GeForce GTX960を使っていたのだが最近どうも調子が悪いのでGTX1060(6GB)を仕入れてみた

NVIDIAのGeForceのCUDAを使ったフィルター処理はなかなか優秀で ちょっと古めのCPU(Core-i7 3770k@4.4GHz)でもけっこうスピードアップが図れるのだが GTX960からGTX1060への変更でどれぐらい早くエンコードできるかも興味があった

それでテスト的にエンコードしてみたので結果をメモしておく

今回はフィルター処理でも重いSD画質(720×480 60i)からFHD画質(1920×1080 24p)へのエンコードをやってみた

フィルターの設定は以下の通り

インターレース解除:24fps化(コーミング除去優先)
インターレース解除の方法:適応補間(高精度)
スマートシャープ
範囲:80
ぼかし強度:3
検出レベル:128
高精度映像ノイズ除去
強さ:100
範囲:広い(低速)-ディテール保存重視
時間軸方向にもノイズを検索する ON

エンコード設定
映像:H.264/AVC, 1920×1080, 23.976 fps, 1 パス VBR (固定品質), 最大 44.7 Mbps
音声:MPEG-4 AAC (LC), 48000 Hz, ステレオ, 256 kbps
エンコーダー:x264
プロファイル:High(4.1)
映像品質:62

この設定で約24分の長さのアニメをエンコードすると
GTX960:55分
GTX1060:33分
これだけの差が出た

投資した甲斐があったと言えるのだが これはフィルターの「高精度映像ノイズ除去」がかなり重いせいなので普段使いのエンコードではどうだろうと別な設定も試してみた

フィルター 1440×1080(60i) → 1920×1080(24p)
インターレース解除:24fps化(コーミング除去優先)
インターレース解除の方法:適応補間(高精度)

この場合は
GTX960:35分
GTX1060:32分

ほとんど誤差レベルの違いしか出なかった

本格的にエンコード時間を短縮したい場合はCPUを新しくするのが有効だと思う
しかし エンコード時にCPU/GPUの使用率の表示を見ていると誤差レベルだったケースでもGTX1060の場合で 25%/75%ぐらいで進行するので GTX1060ぐらいの補助ならばなかなか効果的だと思った

ちなみにSD→FHDに使っているフィルター設定だと ただアップスケールした場合に起こりがちが擬似輪郭だとかが目立たなくなり プロジェクターでも鑑賞に堪えるレベルになる
古い作品でBDが出ていないものだとかを見やすい画質で保存しておきたいという要件はまだあるので GTX1060は買って良かったということにしておこう

エンコードの選択

先日 自宅のエンコード環境についてぼやいたが ちょっと情報不足というか書き足りないことがあったのでメモとして追記しておく

まずはエンコードの目的について再度説明

基本的には放送データを約1/4に圧縮して保存するのが最大の目的
あとは画質の悪い再放送の古いアニメとかにフィルターをかけて若干見やすくしたりすることもあるけど頻度は低め

放送波の画質はデジタル化で高まったとは言っても 所詮は圧縮率の悪いMPEG2でノイズも多いので 画質に対する要求はそんなに高いところまで期待してはいない
本当に面白いと思った作品はBDを買うと決めているので エンコードの設定はそこそこで良いと思っている

そんな感じなので画質を突き詰めた設定はしていない
あくまで放送波を1/4程度に圧縮して画質をあまり落とさずに保存というのが目的なのだ

と ここまでが前置き

今回書いておきたかったのは 私がエンコードするときに自分で決めたルールについて
このルールを決めておかないと 週に数十本ある録画を処理するときにいちいち悩む羽目になってしまうのだ

放送波の種類は大まかに分けて次の種類がある

  1. 地上波:実写(ドラマなど) 1440×1080(60i)
  2. 地上波:アニメ 1440×1080(60i)
  3. BS:実写 1920×1080(60i)
  4. BS:アニメ 1920×1080(60i)
  5. BSアニマックス:アニメ 1440×1080(60i)
  6. BS WOWOW 音声2ch:ドラマ 1920×1080(60i)
  7. BS WOWOW 音声2ch:映画・アニメ 1920×1080(60i)
  8. BS WOWOW 音声5.1ch 1920×1080(60i)

これらをそれぞれ決めた形式でエンコードする

  1. 地上波:実写(ドラマなど) 1440×1080(60i)
  2. 地上波:アニメ 1440×1080(60i)
  3. BS:実写 1920×1080(60i)
  4. BS:アニメ 1920×1080(60i)

    1~4については基本的に 解像度・フレームレートを変えずに保存する
    アニメやアメリカのドラマ等は24pで制作されているのが多いが テロップ等が入ってたりするので 24pにすると再生時にカクカクしてしまうことがあるためだ

  5. BSアニマックス:アニメ 1440×1080(60i)

    アニマックスの場合は 余計なテロップが入ることもなくビットレートが高めで画質もそこそこ良いので 1920×1080(24p)で保存している
    局ロゴはかなり大きいが それは自作ツールでフェードインアウトまで駆使して頑張って消している
    ※局ロゴ消去の詳細については 今のご時世だといろいろ問題ありそうなので明記はしないけども

  6. BS WOWOW 音声2ch:ドラマ 1920×1080(60i)

    WOWOWのドラマはアメリカものの場合は24pにした方が良さそうだが そのまま60iで保存している
    解像度はそのまま1920×108で問題なし

  7. BS WOWOW 音声2ch:映画・アニメ 1920×1080(60i)

    WOWOWの映画やアニメは24pにして問題ないので保存形式は 1920×1080(24p)
    映画については以前 1280×720(24p)で保存していたが 42インチのテレビで見ているときは問題なくても プロジェクターだと解像感がかなり落ちると感じたので 解像度は落とさないことにした

  8. BS WOWOW 音声5.1ch 1920×1080(60i)

    WOWOWの5.1ch放送波は基本的に映画(劇場版アニメも含む)なので 解像度は1920×1080のままでフレームレートを24pにするのは7と同じ
    音声を5.1chでコンテナをm2tsにして保存している
    以前はmkvで保存していたこともあったが DLNAでの再生を考えるとm2tsの方が都合が良い

こんな感じでルールを決めて そのルールに対応した設定ファイルを用意してエンコード時に選ぶだけなので 作業はだいぶシンプルになっているのだ

そして最終的に出来上がる映像ファイルは 映像のコーデックがH.264でコンテナはmp4かm2tsになる

ここで一応説明しておくと
映像ファイル:再生可能な映像と音声が入ったデータファイル
コーデック:映像や音声の圧縮形式(MPEG2はH.263 MPEG4はH.264 などとなる)
コンテナ:映像と音声を映像ファイルにするときのファイル形式(mp4とかm2tsやmkvはコンテナとなる)

また少々ややこしいのがエンコーダーとコーデックのこと
私はTVMW6で使われているエンコーダー x264を使っているがコーデックはH.264となる
コーデックは圧縮形式の規格名で エンコーダーは実際に映像を圧縮するためのプログラムと思っておけば間違いない

なんでこんなことをくどくどと書いたかと言えば 時々コーデックとコンテナを混同しているような掲示板の書き込みを見かけることがあるからだ
書き込みを読み取る側がそれをちゃんと理解して会話を進めていれば問題ないが 似たような混同をした別な人が会話に混ざってくると すごくややこしいことになってくるという展開を見かけることも少なくない

まあ 私はそういうやりとりを見てもニヤニヤと見守ってるだけなのだが

それと大事なことを書き忘れていた

フレームレートについてだが 上の文章で60iだとか24pだとかは1秒あたりの画面の枚数を表している
iとかpはインターレースとプログレッシブを表している
インターレースとプログレッシブについて説明するとめちゃくちゃ長くなるし 正確に伝えられる自信もないので ウィキペディアあたりでも検索してみてほしいけど

以前は再生時にインターレースを上手く解除できないプレイヤーも多くて プログレッシブ化するのが正義みたいない雰囲気もあったけど 今はインターレース解除(インタレ解除と言う場合が多い)をきれいにできるプレイヤーの方が多いと思うので 放送派の60iのまま保存するほうが良いと思っている
というか 私の動画再生環境で60iの再生はまったく問題がないというだけなのだが 他の人に動画をあげたりすることはまったく考えてないので 今後も問題ないだろう

なんとも予定外に長文になってしまったが 普段から自称デジタルデバイドの人たちにIT関係の説明をしているので 文章が説明過多にしまうという事情があるのでご容赦願いたい

エンコード環境

私は現在 アニメや海外ドラマを合わせて週に40本ほど見ているが ほとんどをエンコードして元のTSファイルの1/4程度のサイズにして保存している
知り合いにそのことを話すと 週40本を見ていることにも驚かれるが いちいちCMカットしてエンコードしていることには驚くというより呆気に取られてる感じだ

TSのまま保存しておくと1クール(3ヶ月)で約4TBのHDDを消化してしまうが エンコード済みなら1TBで済むわけだから手間をかける価値はある
それと 放送TSのままだと画面の端に表示されてる局ロゴが気になって仕方がない
局ロゴも小さい画面で見ているとそれほど気にならないが40インチ以上の画面だとかなり邪魔に感じる

そんなわけでエンコードは以下の手順で行っている

1.放送TSをTMPGEnc MPEG Smart Renderer4(TMSR4) でカット編集

2.DGIndexでd2vファイルの生成

3.AVSファイルにDelogoの組み込み

4.TMPGEnc Video Mastering Works6(TVMW6) でH264エンコード

手順2.3.が面倒だったが1.で出来たm2vファイルを読み込んで自動的にDGIndexを起動してAVSを生成するアプリを作ってからはだいぶ楽になった

1.の手順を省くなら放送TSをDGIndexに流し込んで そこからAVSファイルでdelogo
それをTVMW6でカットという方法もあるが その場合は音声のズレをDGIndexの結果からAVSファイルに盛り込む必要があるし TVMW6でのカット編集が意外にレスポンスが悪いので私はTMSR4でのカットの方が快適だと思っている

ハードウェアは以下のように変遷してきた

エンコードを始めた頃はintel Core2Quad Q9550をOCして使っていた
その当時はソフトとしてAviutlとx264を使用していた

その後はCore i5 2500kになり
Core i7 3770k になった

現在もメインはCore i7 3770kを4.4GHzでエンコードしているが エンコードソフトをTVMW5から6にアップグレードしたのをきっかけにnvidia GTX960も追加してみたところ 地上波のアニメ(長さ24分)のエンコードならフィルターなし 1440×1080 60i の固定品質(62)で30分でエンコードが完了するようになった

その後に録画機をリプレースするとき ついでにエンコードもできたらいいと Core i7 4790kを使ったPCも組んでみたが Core i7 3770k(4.4GHz)+GTX960とエンコード時間はほぼ同じ
さすがに新しいコアはエンコード速度が速いと感じるが 3770k+GTX960も悪くない

もちろん4790k+GTX960なら いや もっと上のGTX980あたりならかなりの時間短縮が期待できると思う

勘違いしている人もいるようなのでいちおう書いておくが TVMW6でのGeForceの利用はフィルター演算の補助で使われていて 評判の悪いCUDAエンコードをしているわけではない 念のため

それと実験的に4790kにnvidia GT740も組み合わせてみたが それなりにフィルターを使ったエンコードでもGPUの使用率はほとんど上がらなかった
TVMWも5の頃はCPUとGPUの演算比率の表示があまり信用できなかったが バージョン6になってからはある程度信用しても良さそうなので GT740程度ではGPU使用率が上がらないのが実際のようだ

ちなみに 1440×1080 60i リサイズなし・インターレース解除なしのエンコードでも
3770k+GTX960で CPU 36% : GPU 64% ぐらいで進行する
TVMW6で実装された高精度のインターレース解除を使うと GPUは75%ぐらいまで使われるようだ
さらに高精度ノイズ除去まで使うとGPU 80%を超えるので Core i7 2600kとか3770kとかを使っていてCPUのリプレースを考えているならば とりあえずGTX960以上のGPUを追加してみるのも面白いと思う
特に4790k単体で高精度インターレース解除を使うとかなりエンコードが遅くなってしまうから 予算をGPUに掛けたほうが効果的かもしれない

CMカットに話を戻すと TMSR4のCM候補抽出機能にはかなり助けられている
そのままカットできるほどの検出精度ではないが 例えばDLifeのドラマのようにCM位置を目視で探すとかなり手間のかかるような場合に 自動検出である程度目安を付けられるのはかなり便利なのだ

それとカット編集を行うTSソースはSSDに置いている

TMSR4のシークバーをつかんでグリグリとシークできるのはSSDならではなので 編集を頻繁に行う私には必須になってしまった
HDDに編集元のソースを置いてシークバーをグリグリ動かすと HDDからガリガリと壊れそうな音がするし SSDの耐久性は気にするほどではないと実証されてきているので 動画編集のソース置き場としてはSSDを選びたいと思うのだ

エンコードソフトに関しては フリーのAviutlとx264の組み合ででも同じようなことができるが バッチエンコードツールの出来の良さでTVMW6を選んでいる

こんな風に長々と文章化すると とても面倒なことをしているように思えてしまうかもしれないが 目的はあくまで画質をあまり落とさずに保存サイズを1/4程度にすることで 手間は慣れと自作ツールでだいぶ楽になっている
それに 繰り返し見るほど気に入った作品はBDを買うと決めているので エンコードで画質を完璧にしたいという気持ちは持っていない

TVMW6でのH264エンコードについての設定は 機会があったら書いてみようとは思っているが 先に述べたように画質に完璧を求めていはいので あまり参考にはならないと思う