画面録画用にOBSの設定をいろいろ考えてみた

専業のYouTubeになるつもりなんてないのだが、それでもたまに画面を録画したいときってものがある。

定番だが、OBS Studioを使って録画している。

しかし、映像というものもなかなか進歩が速いうえに、謎の技術の詰め合わせでやたらと複雑で理解していてもすぐに忘れてしまうし、陳腐になってしまう。

一昔前まではFHDでいいと思っていたのに、いまやスマホでさえも4Kだ。実際に4Kのコンテンツを再生する場面があるかはさておき、FHD以上の解像度も検討しようかなと思ってくる。

OBS Studioの設定から、「出力」タブに移動し、「出力モード」を「詳細」に変更して、設定をいじくりまわしてみよう。

本稿の目的はこの「出力」タブの「録画」設定だけだから、他の一般的な設定は何にも触れないぞ!

ちなみに僕の使い方だが画面を録画して、あとで見直す用に使う感じだ。配信ではなく録画なうえ、ゲームなどを遊びながらという感じでもない。画質・音質重視で、ファイルサイズなんかは小さくしたいけれど互換性は大事にしたいなあという感じ。

とりあえず、録画設定から

「録画設定」をいじることから始めよう。

種別

そのまえに。

「種別」は「標準」でいいだろう。FFmpegを使ってもいいし、なんならOBS Studioは内部的にFFmpegを使っているのでニッチな設定をいじりたい人用の選択肢だ。別にオーソドックスな感じでいいので「標準」でいい。

録画設定

録画ファイルのパスは本当に適当でいいだろう。私はビデオフォルダーに保存してくれればいいので「 C:\\Users\\livec\\Videos 」としている。

  • スペースなしのファイル名を生成する

という任意の機能があるが、まあ別に好きにすればいいだろう。動画ファイルを処理するプログラムを書いたりする人は、ファイル名を二重引用符””で囲まなくていいというちょっとした楽ができるぐらいのメリットだろうか?あまりよくわからないが、たんに録画をするだけのユーザーからしたら正直どうでもいいだろう。

コマンドラインツールを使ったりする人なんかはチェックをしておけばいいだろう

録画フォーマット

Hybird MP4

  • Flash Video (.flv)
  • Matroska Video (.mkv)
  • MPEG-4 (mp4)
  • QuickTime (.mov)
  • Hybrid MP4 [ベータ版](.mp4)
  • Fragmented MP4 (.mp4)
  • Fragmented MOV (.mov)
  • MPEG-TS (.ts)
  • HLS (.m3u8 + .ts)

自分が再生できればそれでいい人は、自分の再生できるフォーマットを好きに選んでいい。

他の人も再生するし、自分も特殊なツールなしに、というか普通に使える動画ファイルが欲しいなって人はMP4を選択するのがいいと思う。問題はMP4にもいくつか種類があることだ。

途中でOBS Studioがクラッシュして数時間の録画ファイルがぶっ壊れることがある。

いままでのMP4なら録画ファイルがぶっ壊れてなにも再生できないわけだが、Fragmented MP4ならMP4のなかで細かく録画ファイルを分けてくれる。最後にクラッシュした録画データが壊れるだけで、それまでの録画データは再生できるというわけ。

「おー、すごい!」となるのだが、Fragmented MP4はあんまり普及していないので、再生できる方がレア。

ということで、Hybrid MP4が生まれた。

中身はFragmented MP4なのだが、外のハコは普通のMP4。普通のMP4扱いなので、互換性抜群。基本的にどこでも再生できるが、試験機能なので未知のエラーがあってもごめんという感じ。

まあ、Hybrid MP4でいいよね。

映像エンコーダ

NVIDIA HEVC

RTX 40シリーズGPUの場合はHardware (NVENC, AV1)を、そうでなければHardware (NVENC, HEVC)を選択でよし!

エンコード設定はCQVBRにして目標品質20でプリセットもP6: Slowerにして画質をよくしたいなあって。

チューニングも高画質にしてる。

選べる映像エンコーダーはこれ。

  • AMD HW H.264(AVC)
  • AMD HW H.265(HEVC)
  • AOM AV1
  • NVIDIA H.264
  • NVIDIA HEVC
  • SVT-AV1
  • x264

エンコーダーの解説

  • x264 スタンダードだけど、古いし、わかりやすく画質が悪い。選びたくない。
  • NVIDIA HEVC(H.265) Nvidia GPUに搭載されているNVEncエンコーダーです。NVIDIAは何世代にもわたってハードウェアエンコーダーを改良しており、RTXシリーズのエンコーダーは優秀。特にHEVCエンコーダーは、同世代のAMDよりも画質が良い(といううわさ)。
  • AMD HW H.265(HEVC) AMDのVCEエンコーダーです。My LaptopにはRyzen 7 5800Hが搭載されているけれども、CPUについてる統合GPU(Radeon Graphics)で使用可能。しかし、一般的にNVIDIAのエンコーダーの方が画質面で優秀とされているので、ナシかな。
  • AV1 AV1は比較的新しい映像コーデックで、H.265よりもさらに高い圧縮効率を持つ。同じ画質でファイルサイズを30-50%削減できる可能性がある(が、今のところ耐えられないほど遅い)。
    • AOM AV1 Alliance for Open Mediaが開発したリファレンス実装です。AOMは、Google、Netflix、Amazon、Appleなどが参加する業界団体の略称です。高画質だが、エンコード速度が非常に遅いのが特徴。画質は最高クラスだが、エンコード速度が遅すぎてリアルタイム録画には不向き。基本的には事後エンコード専用と考えてください。実際YouTubeなんかもトランスコードに使ってるし。
    • SVT-AV1 Intel(とNetflix)が開発したAV1エンコーダー。SVTは「Scalable Video Technology」の略。AOM AV1よりも高速でありながら、画質もそれなりに良いバランス型。AV1に興味があるなら、SVT-AV1を試してみる価値がありますね。ファイルサイズの削減効果は確実にある一方で、エンコード速度がリアルタイム録画に追いつくかは、実際に試してみないとわからない。それに、古い再生機器では再生できない可能性があることだけご注意。

音声エンコーダ

FFmpeg Opus

  • FFmpeg AAC
  • FFmpeg ALAC (24bit)
  • FFmpeg FLAC(16bit)
  • FFmpeg Opus
  • FFmpeg PCM(16bit)
  • FFmpeg PCM(24bit)
  • FFmpeg PCM(32bit float)

FFmpeg Opus一択。普通にブラウザで再生できるから互換性の問題はなし!

極端な低ビットレートにしないし、極限的な高音質を求めるわけではないつもりだが、それ抜きでも、FFmpeg Opusを選んだほうがいい。

避けるべき選択肢はPCMとFLAC系のデータ損失ゼロ系のやつ。非圧縮にする意味がないし、可逆圧縮でも過剰。1時間の録画で600MB以上の音声データになり、メリットに対してコストが高すぎる。そもそも可逆圧縮の恩恵を受けるためには、非常に高品質な録音環境と再生環境が必要で、一般的な録画用途では違いを実感することは困難。

最悪FFmpegでAACに変換すればオッケー。

エンコーダ設定

レート制御

目標品質による可変ビットレート(CQVBR)

Nvidiaによる推奨はCQR(Constant Quality Rate)かVBR(Variable Bitrate)だけれども、外質を重視しつつもファイル容量を気にしたいのでCQVBRを選びます。

目標品質

20

最大ビットレート

250000 Kbps

2K解像度で録画するので、こんなもん。その代わりフレームレートは23.976(つまり24フレームでドロップフレームあり)にして気休め程度にデータ量を抑えてます。

キーフレーム間隔

0 s

0 = 自動なので、キーフレームは自動でよろしくということ。

プリセット

PS5: Slow (高画質)

チューニング

高品質

マルチパスモード

2パス(1/4解像度)

  • 1パス
  • 2パス(1/4解像度)
  • 2パス(フル解像度)

ざっくりいえば、ビットレートの配分を決める方法の話。

1パスエンコーディングは、本を最初から最後まで一度だけ読みながら、その場その場で重要度を判断していく感じです。次に何が来るか分からないので、最適な判断ができない場合があります。 2パスエンコーディングは、まず本全体をざっと読んで全体の構造や重要な部分を把握してから、もう一度詳しく読み直す感じです。全体を知っているので、より適切にリソースを配分できます。

1/4解像度とフル解像度は分析に使う解像度の違い。

1/4はまず映像を4分の1の解像度(例:1920x1080 → 480x270)に縮小して高速で全体を分析する。フル解像度は文字通りフル解像度で詳細な分析を行うことで、最も正確な統計データが得られますが、処理時間が大幅に増加します。

ビットレートが画質を決定するので、フル解像度で2パスにするのが理想だけれども、読書だって何回もするのはめんどくさいし、時間が足りないこともある。

無難にデフォルトの2パス(1/4解像度)でいいかと。

リアルタイム配信ならまよわず1パスでOK。

プロファイル

main

  • main10
  • main

普通はmainでOK。HDRで録画したいならmain10で。そもそもRTX 40シリーズのGPUを使っているならAV1エンコーダを使っていると思うが、その場合そもそもmainしか選べないハズ。

  • Look-ahead(オン)
  • 適応量子化(オン)

いろいろなブログで書かれているが、このLook-aheadの説明が意味不明。

OBSのLook-ahead機能は本当にいらない子なのか?|ulosto123
ネットでOBSのオススメ設定を調べてみると、必ずと言っていいほど「Look-aheadはONにするな」と書いています。 その理由はと言いますと「動きの少ない場面ではいいけれど、動きの激しい場面では画質が下がる」とのこと。 それは本当なのでしょうか? 本当にそれほどにダメな機能なんでしょうか? ということで、実際にOBSでの説明を読んでいきます↓ 『動的Bフレームを有効にします。有効にした場合、GPU使用率の増加を犠牲にして最大数まで、必要な分だけ多くのBフレームを使用することで視覚的品質を向上させます。』 英語だとこう↓ ↑有効にすると、GPUの使用率が高くなる代わりに、
OBS StudioのLook-aheadに関する日本語の説明は間違っている - Photo Cafeteria
どうしても納得がいきません。 下はOBS studioのLook-aheadに関する説明なのですが、この記述は

いちおうNvidiaの説明もあるので、そっちを参考にしてみよう。

NVIDIA NVENC Obs Guide
Configure OBS to get the most quality out of your stream.

Look-aheadの記述がある部分を抜き出すとこう。

Look-ahead: Checked. This allows the encoder to dynamically select the number of B-Frames, between 0 and the number of B-Frames you specify. B-frames are great because they increase image quality, but they consume a lot of your available bitrate, so they reduce quality on high motion content. Look-ahead enables the best of both worlds. This feature is CUDA accelerated; toggle this off if your GPU utilization is high to ensure a smooth stream.
Max B-Frames: Set to 4. If you uncheck the Look-ahead option, reduce this to 2 B-Frames.

それぞれ訳してみるとこんな感じ。

Look-ahead(先読み): チェック済み。この機能により、エンコーダーは0から指定したBフレーム数の間で、Bフレームの数を動的に選択できます。Bフレームは画質を向上させる優れた機能ですが、利用可能なビットレートを多く消費するため、動きの激しいコンテンツでは逆に画質を低下させてしまいます。Look-ahead機能を使えば、両方の利点を活かすことができます。この機能はCUDAアクセラレーションに対応しています。GPUの使用率が高い場合は、スムーズな配信を確保するためにこの機能をオフにしてください。
最大Bフレーム数: 4に設定。Look-aheadオプションのチェックを外す場合は、これを2 Bフレームに減らしてください。

Bフレームの動作を簡単に図解すると、こんな感じ。

通常のフレーム順序

I → P → P → P → I
(Iフレーム:完全な画像、Pフレーム:前フレームからの差分)

Bフレームを使った場合

I → B → B → P → B → B → I
(Bフレーム:前後のフレームから予測して圧縮)

動きが激しい場面では効果がある感じですね。

  • Look-aheadがON → 自動的にBフレームを減らす
  • Look-aheadがOFF → 常に指定数のBフレームを使用(画質が落ちる可能性)

適応量子化についての説明もしておこう。

Nvidiaの説明はこんな感じ。

Psycho Visual Tuning: Checked. This enables the Rate Distortion Optimization in the encoder, which greatly optimizes the way you use bitrate, improving image quality on movement.

Bフレーム

Bフレームの説明をするにはちょこっと前知識が必要。

  • Iフレーム(キーフレーム) 完全な画像情報を持つフレーム
  • Pフレーム 前のフレームとの差分情報のみを持つフレーム
  • Bフレーム 前後両方のフレームを参照して作られる双方向予測フレーム

ここの設定をいじることで、連続するBフレームの最大数を設定することができる。数値を上げる(3〜4程度)ことで得られるメリットはこんな感じ。

  • さらに高い圧縮効率
  • より滑らかな動きの表現

一方でデメリットはこんな感じ。

  • エンコード負荷の大幅増加
  • メモリ使用量の増大

再生するときに、カクカクしてしまう原因になってしまうので、まああんまりいじらない方がいい。

結論だが、デフォルトの2のままでいい。

Bフレームを参照

「Bフレームを参照」設定は、エンコード時にBフレーム同士が互いを参照できるかどうかを決める設定。

基本的な仕組みから

Bフレームの参照パターンを理解するために、まず典型的なフレーム構造からみてみよう。

I - B - B - P - B - B - P

Bフレームがある場合、BフレームがIフレームやPフレームだけでなく、ほかのBフレームも参照できるかどうかでBフレームの予測精度が上がるよねって話。

3つの設定の違い

  1. 無効 各Bフレームは、IフレームとPフレームのみを参照。Bフレーム同士は互いを参照ない。最もシンプルで負荷もない方式。メリットは処理負荷が最も軽く、互換性も高いこと。古いハードウェアでも確実に動作し、エンコード時間も最短。デメリットは圧縮効率が劣るので、同じ品質を得るためにはファイルサイズが大きくなってしまうことになる。配信メインで低遅延を重視する場合や、古いハードウェアでの録画で使う感じ。
  2. それぞれ 各Bフレームが、ほかのすべてのBフレームを自由に参照可能。最も柔軟で高効率な圧縮が可能だけれども、計算もむちゃくちゃ複雑になって負荷が爆増。メリットは圧縮効率が最高で、同じファイルサイズでより高品質な映像を得られる(言い方を変えれば小さなファイルサイズで高画質な映像が手に入ること)。特に動きの複雑なシーンや長時間の録画で効果を発揮。デメリットは処理負荷が最も重く、エンコード時間が長くなること。高品質な録画を重視し、十分なハードウェア性能を用意して使う項目。
  3. 中央のBフレームのみ いいとこどりというかわるいとこどりというか、間をとった項目。連続するBフレームのグループの中で、中央に位置するBフレームのみがほかのBフレームを参照できるという制限的なアプローチ。中立的に言えば、「それぞれ」と「無効」の中間的な性能を狙った設定。メリットは「無効」よりも高い圧縮効率を得ながら、「それぞれ」ほど負荷をかけずに済むこと。バランス型の設定とも言える。デメリットは中途半端になりがちで、明確な利点が見えにくいこと。品質と負荷のバランスを取りたい、悪く言えばあんまり使う意味のない設定かもです。

負荷について具体的に

負荷の違いは、プロセス占有率で言えば「無効」を100%とすると、「中央のBフレームのみ」が120-130%、「それぞれ」が150-200%程度の印象です。

古いパソコン、例えば5年以上前のCore i5やGTX 1050クラスだと「それぞれ」設定では録画中にフレームドロップが発生する可能性があります。しかし「軽微」というよりは「明確に重くなる」レベルの差はあります。

カスタムエンコーダオプション

空欄でOK!


これでおっけー、たぶん。

いやあ、動画系の設定って大変だし謎すぎる。少しでも「分かった!」が増えてくれると嬉しいな。おつかれさん

Read more

怪物の口に幸福が吸い込まれる

幸福の総量を最大化する。それが正しいと言われてきた。しかし1974年、ロバート・ノージックはたった一つの問いでその前提を破壊した。もしある存在が、他の全員よりも圧倒的に多くの快楽を得られるなら、功利主義は全員の取り分をその「怪物」に差し出すことを要求する。 あなたの幸福は計算の端数だった。切り捨てられた。 幸福を貪る口 1974年、ロバート・ノージックは『アナーキー・国家・ユートピア』のなかで一つの思考実験を置いた。 功利主義は、効用の怪物の可能性によって困惑させられる。怪物は、他の人々の犠牲から、その人々が失う以上に圧倒的に大きな効用の増加を得る。 仕組みは単純だ。功利主義の原則に従えば、社会全体の幸福を最大化する資源配分が「正しい」。ここに一人、あらゆる資源からとてつもない快楽を引き出す存在が現れたとする。りんご一個で他の百人分の快楽を得る。映画を一本見れば千人分の歓喜を感じる。 功利主義はこの怪物にすべてを差し出すことを要求する。他の全員が飢えても、怪物の快楽が総量を上回る限り、それが「最善」だと計算は告げる。 ノージックが示したかったのは、功利主義が論理的に正し

By Sakashita Yasunobu

綱を引く手が一本ずつ消えていく

あなたは集団のなかで、少しずつ消えている。 それは比喩ではない。測定可能な事実だ。19世紀末、フランスの農学者マクシミリアン・リンゲルマンは、人が集団で綱を引くとき、一人あたりの力が確実に減少することを発見した。人数が増えるほど、個人は薄まる。誰のせいでもなく、誰も怠けているわけではなく、ただ構造がそうさせる。 もしあなたがいま、何かのチームに属しているなら、あなたはすでに全力を出していない。そしてそのことに、おそらく気づいてもいない。 綱を引く手が教えたこと リンゲルマンの実験は素朴だった。 1880年代から1900年代初頭にかけて、彼は農業機械の効率を研究する過程で、人間が集団で水平方向に荷を押したり引いたりする際のパフォーマンスを測定した。その結果は1913年に報告されている。一人で綱を引くとき、その人間は持てる力をすべて発揮する。二人になると、一人あたりの出力は約93%に落ちる。三人で85%。八人になると、49%。半分以下だ。 この数字の意味を考えてみてほしい。八人で綱を引いているとき、あなたは一人のときの半分も力を出していない。しかもそのことに自覚がない。全員が

By Sakashita Yasunobu

嘘が真実を食い尽くす朝

「この文は嘘である」 この一文を前にして、あなたは立ち往生する。もし真だとすれば、文の内容に従って偽になる。もし偽だとすれば、「嘘である」という主張が間違っていることになり、真になる。真だと仮定しても偽だと仮定しても、反対の結論にたどり着く。出口がない。 これは言葉遊びではない。2300年以上にわたってこの問いに取り組んできた哲学者と論理学者たちは、いまだに合意に至っていない。解決策はいくつも提案されてきた。どれも、別の問題を抱えている。 あなたが自分自身について何かを語ろうとするとき、同じ構造がそこにある。 循環の入口 試しにやってみてほしい。「この文は嘘である」が真か偽か、判定する。 真だと仮定する。この文は「嘘である」と主張しているのだから、偽になる。仮定と矛盾する。 では偽だと仮定する。「嘘である」という主張が偽ということは、嘘ではない。つまり真になる。やはり仮定と矛盾する。 どちらに転んでも矛盾する。そしてこの矛盾は、推論のどこかでミスを犯したから生じたのではない。前提そのものに埋め込まれている。 エピメニデスの不発弾 よく混同されるが、古代ギリシアの

By Sakashita Yasunobu

何でも飾れる額縁だけが残った

1917年、マルセル・デュシャンは既製品の男性用小便器に「R. Mutt」と署名し、「泉(Fountain)」と名づけてニューヨーク独立芸術家協会の展覧会に出品した。拒否された。それだけの話だ。だが「それだけ」のはずの出来事が、それ以降のすべての芸術を汚染した。美しさも技巧も素材の選択も関係ない。署名ひとつ、提示の身振りひとつで、便器が「芸術」を名乗れる。そしてその瞬間から、「芸術とは何か」という問いは回答不能になった。回答不能のまま、100年以上が過ぎている。 目で見えないものが芸術を決める 1964年、アンディ・ウォーホルはスーパーマーケットに並ぶブリロの箱と見た目がまったく同じ「ブリロ・ボックス」をギャラリーに置いた。哲学者アーサー・ダントーは、この事態に根本的な問いを見出した。視覚的に区別できない二つの対象のうち、片方だけが芸術である。では芸術を芸術にしているのは何なのか。 ダントーの答えは「アートワールド」だった。芸術作品を芸術たらしめるのは知覚可能な性質ではなく、理論と批評と歴史が編み上げた解釈の共同体、その「理論的雰囲気」なのだと。あなたには何も見えていない。文字

By Sakashita Yasunobu