422 lines
10 KiB
HTML
422 lines
10 KiB
HTML
---
|
|
layout: default
|
|
category: "OBS"
|
|
title: "High Quality Recording (in OBS Studio) with H.264/AVC"
|
|
comments: true
|
|
date: "2023-05-05"
|
|
redirect_from:
|
|
- /guides/high-quality-recordings/x264/
|
|
- /guides/high-quality-recordings/h264/
|
|
---
|
|
|
|
<p class="block">The H.264/AVC codec is one of the oldest, and yet still one of the most versatile codecs out there. It is (relatively) simple to encode and decode, supports a variety of chroma subsampling and bit depths, and is one of the first codecs for stereoscopic video.</p>
|
|
|
|
<details class="block" open>
|
|
<summary>
|
|
<h1>x264</h1>
|
|
</summary>
|
|
<figure class="block">
|
|
<table class="block">
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th width="16%">Lossless</th>
|
|
<th width="16%">Near Lossless</th>
|
|
<th width="16%">Indistinguishable</th>
|
|
<th width="16%">High Quality</th>
|
|
<th width="16%">Acceptable Quality</th>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td>Rate Control</td>
|
|
<td colspan=255>CRF</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CRF</td>
|
|
<td>0</td>
|
|
<td>0 to 4</td>
|
|
<td>5 to 10</td>
|
|
<td>11 to 16</td>
|
|
<td>17 to 22</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Keyframe Interval</td>
|
|
<td colspan=255>1</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Preset</td>
|
|
<td colspan=255>
|
|
ultrafast - placebo<br />
|
|
<small><i>A slower preset only affects file size, quality should be unaffected.</i></small>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Profile</td>
|
|
<td colspan=255>
|
|
None <i>or</i> high<br />
|
|
<small><i>The <code>high</code> profile is required for 4:4:4 and 4:2:2 encoding.</i></small>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Tune</td>
|
|
<td colspan=255>
|
|
None<br />
|
|
<small><i>Tuning can slightly improve compression efficiency, but often harms it instead.</i></small>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>x264 Options</td>
|
|
<td><code>bframes=0 keyint=1 min-keyint=1</code></td>
|
|
<td colspan=4></td>
|
|
</tr>
|
|
<tr>
|
|
<td>OBS Color Format</td>
|
|
<td>4:4:4</td>
|
|
<td>4:4:4 or 4:2:2</td>
|
|
<td colspan="255">4:4:4, 4:2:2 or 4:2:0</td>
|
|
</tr>
|
|
</table>
|
|
<figcaption>For empty fields, look further left.</figcaption>
|
|
</figure>
|
|
</details>
|
|
|
|
<details class="block" open>
|
|
<summary>
|
|
<h1>AMD AMF</h1>
|
|
</summary>
|
|
<details class="block">
|
|
<summary>
|
|
<h2>Built-In</h2>
|
|
</summary>
|
|
<figure class="block">
|
|
<table class="block">
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th width="16%">Lossless</th>
|
|
<th width="16%">Near Lossless</th>
|
|
<th width="16%">Indistinguishable</th>
|
|
<th width="16%">High Quality</th>
|
|
<th width="16%">Acceptable Quality</th>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td>Rate Control</td>
|
|
<td rowspan="255" colspan="2" style="vertical-align: middle; text-align: center;">N/A</td>
|
|
<td colspan="255">CQP</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CQ Level</td>
|
|
<td>5 - 10</td>
|
|
<td>11 - 16</td>
|
|
<td>17 - 22+</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Profile</td>
|
|
<td colspan="255">Speed</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Max B-frames</td>
|
|
<td colspan="255">Any, but less may be faster</td>
|
|
</tr>
|
|
<tr>
|
|
<td>AMF/FFmpeg Options</td>
|
|
<td colspan="255"><code>profile_tier=high preanalysis=false vbaq=false filler_data=false skip_frame=false</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>OBS Color Format</td>
|
|
<td colspan="255">4:2:0</td>
|
|
</tr>
|
|
</table>
|
|
<figcaption>For empty fields, look further left.</figcaption>
|
|
</figure>
|
|
</details>
|
|
<h3 class="block">Additional Notes</h3>
|
|
<ul class="block">
|
|
<li>AMDs H264 encoder is only capable of 4:2:0 SDR (8bit).</li>
|
|
<li>You can freely adjust the Key-Frame Interval for anything but Lossless. Lossless will (and should) always produce an IDR-Frame every frame.</li>
|
|
</ul>
|
|
</details>
|
|
|
|
<details class="block" open>
|
|
<summary>
|
|
<h1>Intel QSV</h1>
|
|
</summary>
|
|
<details class="block">
|
|
<summary>
|
|
<h2>Built-In</h2>
|
|
</summary>
|
|
<figure class="block">
|
|
<table class="block">
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th width="16%">Lossless</th>
|
|
<th width="16%">Near Lossless</th>
|
|
<th width="16%">Indistinguishable</th>
|
|
<th width="16%">High Quality</th>
|
|
<th width="16%">Acceptable Quality</th>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td>Rate Control</td>
|
|
<td rowspan="255" colspan="2" style="vertical-align: middle; text-align: center;">N/A</td>
|
|
<td colspan="255">CQP</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CQQ</td>
|
|
<td>5 - 10</td>
|
|
<td>11 - 16</td>
|
|
<td>17 - 22+</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Target Usage</td>
|
|
<td colspan="255">veryfast</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Profile</td>
|
|
<td colspan="255">high</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Keyframe Interval</td>
|
|
<td colspan="255">1</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Latency</td>
|
|
<td colspan="255">normal</td>
|
|
</tr>
|
|
<tr>
|
|
<td>B Frames</td>
|
|
<td colspan="255">0</td>
|
|
</tr>
|
|
<tr>
|
|
<td>OBS Color Format</td>
|
|
<td colspan="255">4:2:0</td>
|
|
</tr>
|
|
</table>
|
|
<figcaption>For empty fields, look further left.</figcaption>
|
|
</figure>
|
|
</details>
|
|
<h3 class="block">Additional Notes</h3>
|
|
<ul class="block">
|
|
<li>OBS Studio does not export 4:2:2 and 4:4:4 support for QSV.</li>
|
|
<li>Intels QSV H.264 encoder is tied to CPU usage, so it may perform worse than x264 would.</li>
|
|
<li>You can freely adjust the Key-Frame Interval for anything but Lossless. Lossless will (and should) always produce an IDR-Frame every frame.</li>
|
|
</ul>
|
|
</details>
|
|
|
|
<details class="block" open>
|
|
<summary>
|
|
<h1>NVIDIA NVENC</h1>
|
|
</summary>
|
|
<details class="block">
|
|
<summary>
|
|
<h2>StreamFX</h2>
|
|
</summary>
|
|
<figure class="block">
|
|
<table class="block">
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th width="16%">Lossless</th>
|
|
<th width="16%">Near Lossless</th>
|
|
<th width="16%">Indistinguishable</th>
|
|
<th width="16%">High Quality</th>
|
|
<th width="16%">Acceptable Quality</th>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td>Preset</td>
|
|
<td colspan=255>Fastest (P1)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Tune</td>
|
|
<td>Lossless</td>
|
|
<td colspan=255>High Quality</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan=255>H264</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Profile</td>
|
|
<td>High 4:4:4 Predictive</td>
|
|
<td colspan=255>
|
|
High 4:4:4 Predictive <small><i>(when using I444)</i></small><br />
|
|
High <small><i>(when using NV12)</i></small>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Level</td>
|
|
<td colspan=255>Automatic</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan=255>Rate Control Options</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Mode</td>
|
|
<td colspan=255>Constant Quantization Parameter</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Multi-Pass</td>
|
|
<td colspan=255>Single Pass</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Look Ahead</td>
|
|
<td colspan=255>0 frames</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Adaptive I-Frames</td>
|
|
<td colspan=255>Disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Adaptive B-Frames</td>
|
|
<td colspan=255>Disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan=255>Quantization Parameters</th>
|
|
</tr>
|
|
<tr>
|
|
<td>I-Frame QP<br>P-Frame QP<br>B-Frame QP</td>
|
|
<td>0</td>
|
|
<td>0 to 4</td>
|
|
<td>5 to 10</td>
|
|
<td>11 to 16</td>
|
|
<td>17 to 22+</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan=255>Adaptive Quantization</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Spatial Adaptive Quantization</td>
|
|
<td colspan=255>Disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Temporal Adaptive Quantization</td>
|
|
<td colspan=255>Disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan=255>Other Options</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Maximum B-Frames</td>
|
|
<td colspan=255><i>Any</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td>B-Frame Reference Mode</td>
|
|
<td colspan=255><i>Any</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Zero Latency</td>
|
|
<td colspan=255>Default</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Weighted Prediction</td>
|
|
<td colspan=255>Default</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Non-reference P-Frames</td>
|
|
<td colspan=255>Default</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Reference Frames</td>
|
|
<td colspan=255>-1 frames</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Low Delay Key-Frame Scale</td>
|
|
<td colspan=255>-1</td>
|
|
</tr>
|
|
<tr>
|
|
<th colspan=255>Key Frames</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Interval Type</td>
|
|
<td>Frames</td>
|
|
<td colspan=255>Any</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Interval</td>
|
|
<td>1 frame</td>
|
|
<td colspan=255>Any</td>
|
|
</tr>
|
|
<tr>
|
|
<td>OBS Color Format</td>
|
|
<td colspan="2">4:4:4</td>
|
|
<td colspan="255">4:4:4 or 4:2:0</td>
|
|
</tr>
|
|
</table>
|
|
<figcaption>For empty fields, look further left.</figcaption>
|
|
</figure>
|
|
</details>
|
|
<details class="block">
|
|
<summary>
|
|
<h2>Built-In</h2>
|
|
</summary>
|
|
<figure class="block">
|
|
<table class="block">
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th width="16%">Lossless</th>
|
|
<th width="16%">Near Lossless</th>
|
|
<th width="16%">Indistinguishable</th>
|
|
<th width="16%">High Quality</th>
|
|
<th width="16%">Acceptable Quality</th>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td>Rate Control</td>
|
|
<td rowspan="255" style="text-align: center; vertical-align: middle;">N/A</td>
|
|
<td colspan="255">CQP</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CQ Level</td>
|
|
<td>0 - 4</td>
|
|
<td>5 - 10</td>
|
|
<td>11 - 16</td>
|
|
<td>17 - 22+</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Preset</td>
|
|
<td colspan="255">P1: Fastest (Lowest Quality)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Tuning</td>
|
|
<td colspan="255">High Quality</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Multipass Mode</td>
|
|
<td colspan="255">Single Pass</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Profile</td>
|
|
<td colspan="255">high</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Look-ahead</td>
|
|
<td colspan="255">Disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Psycho Visual Tuning</td>
|
|
<td colspan="255">Disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Max B-frames</td>
|
|
<td colspan="255">0</td>
|
|
</tr>
|
|
<tr>
|
|
<td>OBS Color Format</td>
|
|
<td>4:4:4</td>
|
|
<td colspan="255">4:4:4 or 4:2:0</td>
|
|
</tr>
|
|
</table>
|
|
<figcaption>For empty fields, look further left.</figcaption>
|
|
</figure>
|
|
</details>
|
|
<h3 class="block">Additional Notes</h3>
|
|
<ul class="block">
|
|
<li>You can freely adjust the Key-Frame Interval for anything but Lossless. Lossless will (and should) always produce an IDR-Frame every frame.</li>
|
|
</ul>
|
|
</details>
|
|
|
|
<p class="block align-center"><a href="../">Back to the Guide</a></p>
|