mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-12 20:15:10 +00:00
Deployed 811e0a1 with MkDocs version: 1.6.1
This commit is contained in:
@@ -2890,13 +2890,16 @@ audio, add hand-built subtitles or an <code>Attachment</code> (e.g. cover art).
|
||||
filter for resolution/bitrate. See <code>fetch_dash_manifest</code> in the EXAMPLE service
|
||||
for a thorough demonstration.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Flip HDR10 → HDR10+ by hand when you know the platform embeds it</p>
|
||||
<p>HDR10+ is a <strong>bitstream (SEI)</strong> feature. The HLS parser intentionally does
|
||||
not sniff it from the bitstream, so a manifest that embeds HDR10+ SEI but labels
|
||||
the variant plain HDR10 will parse as HDR10. The label is the only signal
|
||||
the parser has, and it is wrong. Only the service author knows the platform
|
||||
embeds HDR10+, so it is on you to correct <code>video.range</code> to HDR10+ here for
|
||||
those services.</p>
|
||||
<p class="admonition-title">HDR10+ in tracks labelled HDR10</p>
|
||||
<p>HDR10+ is a <strong>bitstream (SEI)</strong> feature, and many manifests label an HDR10+
|
||||
variant as plain HDR10. Before unshackle lists or selects tracks, the
|
||||
<a href="../../reference/configuration/download/#hdr10plus_probe"><code>hdr10plus_probe</code></a>
|
||||
reads the first fragment of each HEVC HDR10 track and changes <code>video.range</code> to
|
||||
HDR10+ when the fragment carries HDR10+ metadata. Set <code>video.range</code> yourself
|
||||
only when the probe cannot read the fragment, for example an ISM track whose
|
||||
SEI is encrypted, or when the platform gives a reliable signal of its own.
|
||||
If the playback API has no HDR10+ value, request HDR10 for an HDR10+ request
|
||||
and let the probe relabel the tracks.</p>
|
||||
</div>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title"><code>get_tracks</code> is your only chance to capture license inputs</p>
|
||||
|
||||
@@ -3316,7 +3316,8 @@ the title fails.</p>
|
||||
<p>When a title has HDR10+ but no DV track, <code>-r HYBRID --generate-dv</code> makes a Dolby Vision
|
||||
Profile 8.1 track from the HDR10+ metadata. It needs <code>hdr10plus_tool</code> as well as <code>dovi_tool</code>.
|
||||
When a title has a DV track, unshackle uses that track and ignores the flag. When it has none,
|
||||
the flag also makes unshackle ask the service for its HDR10+ tracks.</p>
|
||||
the flag also makes unshackle ask the service for its HDR10+ tracks. A track that the service labels HDR10 but
|
||||
that carries HDR10+ metadata also qualifies (see <a href="../../reference/configuration/download/#hdr10plus_probe"><code>hdr10plus_probe</code></a>).</p>
|
||||
<div class="language-shell highlight"><span class="filename">Generate Dolby Vision from HDR10+, and keep the HDR10+ file too</span><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>unshackle<span class="w"> </span>dl<span class="w"> </span>-q<span class="w"> </span><span class="m">2160</span><span class="w"> </span>-r<span class="w"> </span>HYBRID,HDR10P<span class="w"> </span>--generate-dv<span class="w"> </span>EXAMPLE<span class="w"> </span><span class="s1">'...'</span>
|
||||
</span></code></pre></div>
|
||||
<p>Each HDR10+ scene becomes one Dolby Vision shot, with its own scene cut and its own Level 1
|
||||
|
||||
@@ -1193,6 +1193,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#hdr10plus_probe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
hdr10plus_probe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -2149,6 +2160,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#hdr10plus_probe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
hdr10plus_probe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -2850,6 +2872,47 @@ release yourself, in place of the fixed <code>DUAL</code>, <code>MULTi</code> an
|
||||
<p>Regional variants of the same base language (e.g. <code>en-US</code> and <code>en-GB</code>) collapse to a single
|
||||
language in both modes, so they never trigger <code>{dual}</code> on their own.</p>
|
||||
</div>
|
||||
<h2 id="hdr10plus_probe"><code>hdr10plus_probe</code><a class="headerlink" href="#hdr10plus_probe" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Type:</strong> <code>bool</code> · <strong>Default:</strong> <code>true</code></li>
|
||||
</ul>
|
||||
<p>Find the HDR10+ tracks that a service labels as HDR10. Before unshackle lists or selects tracks, it
|
||||
reads the first fragment of HEVC HDR10 tracks from DASH, HLS fMP4 and one-file sources. A track
|
||||
whose first frame carries HDR10+ (SMPTE ST 2094-40) metadata becomes <code>HDR10P</code>. Then <code>-r HDR10P</code>,
|
||||
<code>--list</code> and <a href="../../../guide/downloading/#dolby-vision-from-hdr10"><code>--generate-dv</code></a> use it.</p>
|
||||
<p>When two HDR10 tracks have the same resolution, they can be an HDR10 encode and an HDR10+ encode
|
||||
side by side, so unshackle probes every track. When each track has its own resolution, unshackle
|
||||
probes the two highest and the two lowest bitrates first:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Result</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>All four carry HDR10+</td>
|
||||
<td>Every HDR10 track of the title becomes <code>HDR10P</code>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Some carry HDR10+</td>
|
||||
<td>The title has HDR10 and HDR10+ encodes side by side, so unshackle probes every track.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>None carry HDR10+</td>
|
||||
<td>Every track stays <code>HDR10</code>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>A probe that fails, or a fragment whose metadata is encrypted, keeps the label from the service.
|
||||
unshackle does not probe ISM tracks. Each probe makes one to three small requests: the 64 KiB
|
||||
fragment, plus the playlist of an HLS track or the header of a one-file track. The probes run in
|
||||
parallel, with no more at a time than <code>--workers</code> (or <code>dl.workers</code>) sets for a track download.</p>
|
||||
<div class="language-yaml highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nt">hdr10plus_probe</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||||
</span></code></pre></div>
|
||||
<p>A remote server probes its tracks before it sends them, so the setting on the server applies to
|
||||
remote downloads and to the REST API.</p>
|
||||
<h2 id="generate_dv_mode"><code>generate_dv_mode</code><a class="headerlink" href="#generate_dv_mode" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Type:</strong> <code>str</code> · <strong>Default:</strong> <code>v29</code></li>
|
||||
@@ -2879,7 +2942,7 @@ same peak and letterbox area. They differ in the scene average, which the TV use
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="language-yaml highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nt">generate_dv_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v29</span>
|
||||
<div class="language-yaml highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="nt">generate_dv_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v29</span>
|
||||
</span></code></pre></div>
|
||||
<p>The setting applies on the machine that runs the hybrid step: the client for a remote download, the
|
||||
server for a REST API job.</p>
|
||||
|
||||
@@ -1993,7 +1993,7 @@ default.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="download/">Download & processing</a></td>
|
||||
<td><code>dl</code>, <code>continue_downloads</code>, <code>merge_segments</code>, <code>subtitle</code>, <code>audio</code>, <code>muxing</code>, <code>language_tags</code>, <code>dual_multi_mode</code>, <code>generate_dv_mode</code></td>
|
||||
<td><code>dl</code>, <code>continue_downloads</code>, <code>merge_segments</code>, <code>subtitle</code>, <code>audio</code>, <code>muxing</code>, <code>language_tags</code>, <code>dual_multi_mode</code>, <code>generate_dv_mode</code>, <code>hdr10plus_probe</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="output/">Output & naming</a></td>
|
||||
|
||||
File diff suppressed because one or more lines are too long
+38
-38
@@ -2,154 +2,154 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/creating-a-service/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/service-architecture/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/authentication/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/dashboard/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/endpoints/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/errors/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/job-lifecycle/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/quickstart/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/remote-sessions/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/getting-started/configuration-file/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/getting-started/installation/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/getting-started/quickstart/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/cli-reference/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/downloading/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/drm-and-cdm/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/output-and-naming/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/proxies-and-vpn/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/subtitles/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/troubleshooting/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/vaults/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/config/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/drm/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/service/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/titles/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/tracks/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/directories/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/download/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/drm/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/example/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/misc/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/network/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/output/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/post-scripts/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/services/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/vaults/</loc>
|
||||
<lastmod>2026-10-17</lastmod>
|
||||
<lastmod>2026-10-18</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
Reference in New Issue
Block a user