toruのブログ

月1くらいで記事書きたい。

趣味で作っている Countdown動画の話

背景

  • 筆者は趣味で 4秒ほどの長さの Countdown動画を作っている
  • 最近気づいたのだが、筆者は Countdown動画を作成した理由をどこにも書いていなかった
  • そこで本ブログに作成した理由を書くことにした

目的

  • 筆者が Countdown動画を作成した理由を書く
  • ついでに軽く Countdown動画の解説もする
    • 各パーツが何を判断する目的で作成したものか情報を残す

Cowntdown動画を作成した理由

主に3つある。

  • ① コンテンツの SDR/HDR や フレームレートなどを動画の冒頭で判断するため
  • ② 複数台の表示デバイスを並べてコンテンツ比較する際に、特定のデバイスで遅延が生じていないか確認するため
  • ③ 音の遅延が発生していないか軽く確認するため

① コンテンツの SDR/HDR や フレームレート などの判断

世の中の動画には様々なバリエーションがある。例を以下に示す。

  • Resolution: 1920x1080, 3840x2160
  • Color space: BT.709, HDR10
  • Frame rate: 24P, 25P, 30P, 50P, 60P
  • Chroma subsampling: YCbCr444, YCbCr422, YCbCr420

筆者は以前より上記の情報を動画再生時に簡単に確認したいと考えていた。

もちろん、パソコンでローカルストレージのファイルを再生する場合であれば、ツールを使うことで簡単に確認できる(下図参照)。

f:id:takuver4:20210722234454p:plain
コンテンツのメタデータを MPC-BE で表示した例

その一方で スマートホンタブレットTwitterYouTube の動画を再生する際に、こうした情報を確認するのは非常に困難である。 そこで、せめて 自分が投稿した動画 に関しては 目視 で SDR or HDR やフレームレートの判断が出来るように、カウントダウン動画を付けることにした(「私が作った動画です」とアピールする意図も少しだけある)。

②特定のデバイスで遅延が生じていないか確認

特定の製品で表示遅延が生じていないか確認するのに使いたいと考えた。

例えば 製品A、製品B、製品C を並べて画質評価をする場面を考える。 ここで 製品A、製品B、製品C に対して同時に Countdown 動画を表示して、それをスマホで写真撮影したとする。 その際に下図になっていれば「製品B は他の製品と比較して約1フレームの表示遅延がある」と判別することができる(※1, ※2)。

f:id:takuver4:20210723092839p:plain
Countdown 動画を使った遅延確認の例

※1 なお、ソース動画にタイムコードを付与して表示すれば全く同じ事が実現できるため、わざわざ筆者作成の Countdown 動画を使う必要性は低い

※2 更に言えば正確な遅延測定には専用の機材を使用するべきである[1]。本動画は筆者が趣味で作成したものであり業務レベルで使用することは推奨しない

③ 音の遅延が発生していないか確認

信号の伝送路の問題で音の遅延が生じていないか確認したいと考えて、カウントが切り替わるタイミングで音が鳴るようにした(かなり主観的な評価になってしまうので参考程度にしか使えないが…)。

Countdown動画の簡単な解説

以下の①~④について簡単に説明する。

f:id:takuver4:20210723113140p:plain
Countdown の主要なパーツに番号を割り当てたもの

① Rampパターン

意図しない Limited Range と Full Range のミスマッチで黒つぶれや白飛びが生じていないか確認する。

② 10 bit 表示判別パターン

以下の過去記事で作成したパターンを動画として盛り込んだもの。

trev16.hatenablog.com

なお 60P 版だと水平方向の動きでパターンがぼやけて(?)しまい、8 bit/10 bit の判別は非常に困難となった。 次のバージョンで修正したい。

③ YCbCr444, YCbCr422, YCbCr420 判別パターン

444, 422, 420 を目視で判別するためのパターン。各 Chroma Subsampling における見え方は以下の通り。

なお、444 と 422 を目視で判別するには若干の慣れが必要である。422 は magenta, red が縦長に見えるので white と交互に見比べれば判別できる(自分は慣れているので可能だが、初見だと難しいと思う)。

f:id:takuver4:20200705141347p:plain
Chroma Subsampling による見え方の違い

④ Twitch の Audio Video Sync Test パターンを参考にした何か

以下の Twitch の Audio Video Sync Test パターン[2] が素敵だったので、少し改良して自分の動画に盛り込んだ。 Twitch版は連続的にバーが動いているが、自分の動画では離散的に動くようにした。その方が静止画で撮影した際に確認しやすいと考えたからである。

Countdown 動画のダウンロード

誰も欲しがらないとは思うが、エンコードした動画一式は以下でダウンロードが可能である。再配布さえしなければ自由に使ってもらって構わない。

バリエーションは以下の通り。

  • Resolution: 1920x1080, 3840x2160
  • Color space: BT.709, HDR10
  • Frame rate: 24P, 30P, 50P, 60P
  • Chroma subsampling: YCbCr444, YCbCr420

drive.google.com

YCbCr444 のエンコードパラメータは以下の通り。-qp 0 を指定しているのでエンコード要因による劣化は無い(RGB to YCbCr や Full Range to Limited Range の劣化は存在する)。

SDR

ffmpeg -color_primaries bt709 -color_trc bt709 -colorspace bt709 -r 24 -i input_video_file -i audio_file -c:a aac -c:v hevc -movflags write_colr -pix_fmt yuv444p12le -qp 0 -color_primaries bt709 -color_trc bt709 -colorspace bt709 output.mov -y

HDR

ffmpeg -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -r 60 -i input_video_file -i audio_file -c:a aac -c:v hevc -movflags write_colr -pix_fmt yuv444p12le -qp 0 -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc output.mov -y

参考資料

[1] 4Gamer.net, "西川善司の3DGE:「ストリートファイターV」にまつわる遅延の謎を,遅延計測システムを使って検証してみた", https://www.4gamer.net/games/486/G048632/20210228001/

[2] "Audio Video Sync Test 60 FPS", https://youtu.be/TjAa0wOe5k4