FC2ブログ

HEVC動画

こんにちは。

最近になって時々、家電量販店のテレビ売り場で「4K」「4Kテレビ」なんて文字が見られます。総務省も来年には4Kテレビ放送開始とか、2020年の東京オリンピックで8Kテレビ放送とか言ってるみたいですがどうなるんでしょうね。

いわゆるフルハイビジョンなどと比較すると約4倍のピクセル数で表示され、詳細かつきれいな映像になるとされています。

現在のフルハイビジョン動画ではMPEG-2MPEG-4 AVC/H.264がよく使われていて、Blu-ray Diskでその2つと同様採用されているVC-1などのコーデックがあります。

これに対して4K解像度の動画は映画以外ではあまりまだ一般的でないこともあって、一般的になっているコーデックを調べてもすぐ出てくるのはXAVCとH.265(HEVC)しかありません。

YouTubeには映画の宣伝動画などが4K解像度でアップロードされているようで、運営しているGoogleが推進するWebMなどは、(現状対応しているかはよくわかりませんが)すくなくともそのうち対応するのでしょうね。

さてよくわからないことはおいておいて、XAVCは基本的にH.264の高画質向けモードを使うよう(参考:en:Wikipedia - XAVC)なのでHEVCについて調べました。

するともうがっかりするぐらいまだ開発段階でした。HTML5を調べたときもがっかりしましたがそれ以上です。どうもその方面の専門の企業はエンコーダを開発しているようですが、素人にも使いやすいGUIを備えたエンコーダはまだ(少なくとも無償ソフトでは)ありません。なんかDivX Converterで変換に対応しているようです。また再生ソフトもありません。またDivX Playerが再生に対応したようです。(テスト自体はちょっと前にやったので当時は打ち消し線つきで書いたような状況だったんです多分)

そもそも映像情報の符号化方式は暫定のようなものが決まってきているようですが、音声情報と多重化(MUX)したりするコンテナの標準的な方法も一つに固まっていないようです。

ただそんななかちょっと気合いを入れてHEVC.infoにあるエンコーダをbuildして使ってみました。

くわしい話は追記に譲って感想を書かせてもらうと、「エンコードはまだまだ」「デコードももうひとがんばり」といった感じです。

エンコード結果そのものは悪くありません。低ビットレートでは、同程度のビットレートで圧縮したH.264の動画の法がノイズ感が少なく見やすい印象も受けましたが、テスト用のエンコーダのマニュアルもあまり見ずに添付の設定ファイルをそのまま利用したので、パラメータの検討次第で同程度までは改善するのでしょう。

ただエンコード処理にかかる時間が長すぎます。約200Mbps・3秒でエンコードに約7時間、約3Mbps・3秒で約3時間かかりました。別にパソコンが(そんなに)古いわけではなく(Intel Core i5-2310(SandyBridge) 2.9GHz4core;main memory:4GB)、他でも課題の一つとして指摘されているようです。エンコード中CPUの使用率がちょうど25%程度だったのが気になったところで、最近のニュースでは、映像を分割して分散処理することで4K映像のリアルタイムエンコーディング(実時間での符号化)を実現したようですがちょっと重い感は否めないですね。

デコーダはエンコーダに比べれば早いですが、3秒の動画を200秒もかかってデコードするのはやっぱりつらくないでしょうか。


とりあえず今度はDivXコンバータを使ってみます。一部ではフルHDで実時間の12倍程度(十分長いか)って噂も聞きます。
前述しましたがまずはPCの基本スペックから

CPU: Intel Core i5-2310(SandyBridge) 2.9GHz 4core
Memory: 4GB

映像のソースはBlenderで作成したTGA(RGB;8bit/ch)シーケンスをffmpegでyuv420p(YUV 4:2:0)の無圧縮動画に変換してTAppEncoder.exeで添付の設定ファイル(encoderintra_main.cfg)を指定して"-q"オプションを1,30,51の3パターンでエンコードしました。またそれをTAppDecoder.exeでデコードしました。処理結果などは以下。

q.hevc sizeencode timedecode timebitrate
1700,67 KB24799.697 sec1058.720 sec229,595 kbps
305,741 KB14009.682 sec362.531 sec18,811 kbps
511,005 KB11352.928 sec254.386 sec3,291 kbps
raw---622,000 kbps

qの値が小さいほど画質が低くなります。

本当は実際のファイルをUPしたいんですが重すぎる上にファイルの制限があるのでフレームを取り出した静止画で。

動きrawq=1q=30q=51
ない場所Rigid_yuv_9_ld.pngRigid[q01]_hevc_9_ldRigid[q30]_hevc_9_ldRigid[q51]_hevc_9_ld
ある場所Rigid_yuv_9_cc.pngRigid[q01]_hevc_9_ccRigid[q30]_hevc_9_ccRigid[q51]_hevc_9_cc

このくらい縮小してしまうとどれも同じですが、クリックで別ページに開いてもらうとぱっと見でq=51が落ちます。これはこのエンコーダの最低画質ですからある意味当然ですが。拡大していってもらうとq=1とq=30の違いが少しあることがわかると思います。どうしてもq=30のほうがグラデーションのきめ細かさがノイズになってしまうんですね。

上の画像はデコードしたYUV動画から直接RGB変換したもの(の一部)なので等倍で見てもらえばわかるとおり、q=30でフルHDの解像度を十分生かせるクオリティに仕上がっていると思います。q=1は最高画質なので1/3のビットレートながら拡大しても違いが見つからない、いわば可逆圧縮と競合できるレベルです。逆に言えば実用的かが怪しいですが。

そうそう。ちなみにどんな動画なのかのイメージだけgifアニメでおいておきます。
Rigid[NoEncoder]
スポンサーサイト



コメント

非公開コメント

プロフィール

f(t)=k

Author:f(t)=k
ベクトル画像をもっと世に広めたい一般人その1

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR