mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-14 13:05:09 +00:00
Deployed 06f87da with MkDocs version: 1.6.1
This commit is contained in:
@@ -3018,7 +3018,7 @@ string form displays kb/s, and <code>--vbitrate</code> and <code>--abitrate</cod
|
||||
<h3 id="audio"><code>Audio</code><a class="headerlink" href="#audio" title="Permanent link">¶</a></h3>
|
||||
<p><code>Audio</code> adds <code>bitrate</code>, <code>channels</code>, <code>joc</code> (Joint Object Coding, the Atmos indicator),
|
||||
and <code>descriptive</code>. <code>Audio.Codec</code> covers <code>AAC</code>, <code>AC3</code> (<code>DD</code>), <code>EC3</code> (<code>DD+</code>), <code>AC4</code>,
|
||||
<code>OPUS</code>, <code>OGG</code> (Vorbis), <code>DTS</code>, <code>DTSX</code>, <code>DTSHD</code>, <code>MPEGH</code>, <code>ALAC</code>, and <code>FLAC</code>. The <code>atmos</code> property is <code>True</code> when
|
||||
<code>OPUS</code>, <code>OGG</code> (Vorbis), <code>DTS</code>, <code>DTSX</code>, <code>DTSHD</code>, <code>MPEGH</code>, <code>ALAC</code>, <code>FLAC</code>, and <code>MP3</code>. The <code>atmos</code> property is <code>True</code> when
|
||||
<code>joc</code> is set (or when <code>extra</code> flags it).</p>
|
||||
<h3 id="subtitle"><code>Subtitle</code><a class="headerlink" href="#subtitle" title="Permanent link">¶</a></h3>
|
||||
<p><code>Subtitle</code> adds three mutually-constrained flags: <code>cc</code> (closed captions), <code>sdh</code>
|
||||
@@ -3120,7 +3120,7 @@ because HLS variants carry no language.</p>
|
||||
</ul>
|
||||
<h2 id="drm-hooks">DRM hooks<a class="headerlink" href="#drm-hooks" title="Permanent link">¶</a></h2>
|
||||
<p>If a track carries DRM, the framework licenses and decrypts it, but it needs your
|
||||
service to talk to the platform's license server. unshackle recognizes five DRM systems:</p>
|
||||
service to talk to the platform's license server. unshackle recognizes six DRM systems:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -3155,6 +3155,11 @@ service to talk to the platform's license server. unshackle recognizes five DRM
|
||||
<td>Proprietary WASM DRM</td>
|
||||
<td>keys extracted locally; no license server</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>BlowfishStripe</code></td>
|
||||
<td>Blowfish CBC stripe cipher</td>
|
||||
<td>the service gives the per-track key; no CDM, no license server</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition warning">
|
||||
|
||||
@@ -3042,7 +3042,7 @@
|
||||
<tr>
|
||||
<td><code>-a</code>, <code>--acodec</code></td>
|
||||
<td>any</td>
|
||||
<td>Audio codec(s), comma-separated. Accepts <code>AAC</code>, <code>AC3</code>/<code>DD</code>, <code>EC3</code>/<code>DD+</code>/<code>eac3</code>/<code>ddp</code>, <code>AC4</code>/<code>AC-4</code>, <code>OPUS</code>, <code>OGG</code>/<code>VORB</code>/<code>vorbis</code>, <code>DTS</code>, <code>DTSX</code>/<code>DTS-X</code>, <code>ALAC</code>, <code>FLAC</code>.</td>
|
||||
<td>Audio codec(s), comma-separated. Accepts <code>AAC</code>, <code>AC3</code>/<code>DD</code>, <code>EC3</code>/<code>DD+</code>/<code>eac3</code>/<code>ddp</code>, <code>AC4</code>/<code>AC-4</code>, <code>OPUS</code>, <code>OGG</code>/<code>VORB</code>/<code>vorbis</code>, <code>DTS</code>, <code>DTSX</code>/<code>DTS-X</code>, <code>ALAC</code>, <code>FLAC</code>, <code>MP3</code>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>-vb</code>, <code>--vbitrate</code></td>
|
||||
|
||||
@@ -3527,6 +3527,11 @@ non-fatal: the manifest value stays in place.</p>
|
||||
<td><code>FLAC</code></td>
|
||||
<td>FLAC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>MP3</code></td>
|
||||
<td><code>MP3</code></td>
|
||||
<td>MPEG-1 Audio Layer III</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>unshackle accepts names, values, and a few aliases: <code>eac3</code> and <code>ddp</code> both give <code>EC3</code>,
|
||||
|
||||
@@ -2622,7 +2622,7 @@ from the track, asks the CDM for a license challenge, sends that challenge to th
|
||||
service's license server, hands the response back to the CDM to extract the keys, and
|
||||
then decrypts the file with those keys.</p>
|
||||
<h2 id="supported-drm-systems">Supported DRM systems<a class="headerlink" href="#supported-drm-systems" title="Permanent link">¶</a></h2>
|
||||
<p>unshackle implements five DRM systems. Only the first two need a device file and a
|
||||
<p>unshackle implements six DRM systems. Only the first two need a device file and a
|
||||
license-server handshake. The rest are special cases.</p>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -2664,6 +2664,12 @@ license-server handshake. The rest are special cases.</p>
|
||||
<td>Ticket from the service API; keys extracted locally via WASM. No license server.</td>
|
||||
<td>ML-Worker binary + AES-ECB, per segment</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Blowfish stripe</strong></td>
|
||||
<td>none</td>
|
||||
<td>The service gives the per-track key. No CDM, no license server.</td>
|
||||
<td>in-process Blowfish-CBC on every third 2048-byte chunk</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition warning">
|
||||
|
||||
@@ -3022,6 +3022,10 @@ final path.</p>
|
||||
<td><code>.ogg</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MP3</td>
|
||||
<td><code>.mp3</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>AAC, ALAC, and all other codecs</td>
|
||||
<td><code>.m4a</code></td>
|
||||
</tr>
|
||||
|
||||
+1
-1
@@ -2143,7 +2143,7 @@ at a title and it will:</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Audio</td>
|
||||
<td>AAC, AC-3, E-AC-3, AC-4, Opus, Vorbis, DTS, DTS-X, ALAC, FLAC; Dolby Atmos handling; per-channel-layout selection</td>
|
||||
<td>AAC, AC-3, E-AC-3, AC-4, Opus, Vorbis, DTS, DTS-X, ALAC, FLAC, MP3; Dolby Atmos handling; per-channel-layout selection</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Subtitles</td>
|
||||
|
||||
BIN
Binary file not shown.
@@ -1929,6 +1929,45 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.drm.BlowfishStripe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> BlowfishStripe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label=" BlowfishStripe">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.drm.BlowfishStripe.decrypt_chunk" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> decrypt_chunk
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.drm.BlowfishStripe.decrypt" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> decrypt
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -2778,6 +2817,45 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.drm.BlowfishStripe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> BlowfishStripe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label=" BlowfishStripe">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.drm.BlowfishStripe.decrypt_chunk" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> decrypt_chunk
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.drm.BlowfishStripe.decrypt" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> decrypt
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -3627,6 +3705,94 @@ For configuring DRM as a user, see <a href="../../../guide/drm-and-cdm/">DRM &am
|
||||
|
||||
|
||||
|
||||
<div class="doc doc-object doc-class">
|
||||
|
||||
|
||||
|
||||
<h2 id="unshackle.core.drm.BlowfishStripe" class="doc doc-heading">
|
||||
<code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">BlowfishStripe</span>
|
||||
|
||||
|
||||
<a href="#unshackle.core.drm.BlowfishStripe" class="headerlink" title="Permanent link">¶</a></h2>
|
||||
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">BlowfishStripe</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
|
||||
|
||||
|
||||
<p>Blowfish CBC stripe cipher: the service encrypts every third full 2048-byte chunk and leaves the rest clear.</p>
|
||||
<p>Each encrypted chunk is its own CBC run with a fixed IV. The service gives the content key, so there is no licence.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="doc doc-children">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h3 id="unshackle.core.drm.BlowfishStripe.decrypt_chunk" class="doc doc-heading">
|
||||
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">decrypt_chunk</span>
|
||||
|
||||
|
||||
<a href="#unshackle.core.drm.BlowfishStripe.decrypt_chunk" class="headerlink" title="Permanent link">¶</a></h3>
|
||||
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">decrypt_chunk</span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
|
||||
<p>Decrypt one encrypted chunk.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h3 id="unshackle.core.drm.BlowfishStripe.decrypt" class="doc doc-heading">
|
||||
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">decrypt</span>
|
||||
|
||||
|
||||
<a href="#unshackle.core.drm.BlowfishStripe.decrypt" class="headerlink" title="Permanent link">¶</a></h3>
|
||||
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">decrypt</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
|
||||
<p>Decrypt the file to a new file that then replaces it. A short trailing chunk stays clear.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-class">
|
||||
|
||||
|
||||
|
||||
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-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/creating-a-service/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/service-architecture/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/authentication/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/dashboard/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/endpoints/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/errors/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/job-lifecycle/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/quickstart/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/dev/rest-api/remote-sessions/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/getting-started/configuration-file/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/getting-started/installation/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/getting-started/quickstart/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/cli-reference/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/downloading/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/drm-and-cdm/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/output-and-naming/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/proxies-and-vpn/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/subtitles/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/troubleshooting/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/guide/vaults/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/config/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/drm/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/service/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/titles/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/api/tracks/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/directories/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/download/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/drm/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/example/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/misc/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/network/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/output/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/post-scripts/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/services/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://docs.unshackle.dev/reference/configuration/vaults/</loc>
|
||||
<lastmod>2026-10-26</lastmod>
|
||||
<lastmod>2026-10-27</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
Reference in New Issue
Block a user