Files
videobeaux/docs/_site/programs/utilities/thumbs.html
2025-12-07 22:04:44 -05:00

211 lines
9.3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>thumbs</title>
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="thumbs" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="The friendly multilateral video toolkit built for artists by artists." />
<meta property="og:description" content="The friendly multilateral video toolkit built for artists by artists." />
<link rel="canonical" href="http://localhost:4000/videobeaux/programs/utilities/thumbs.html" />
<meta property="og:url" content="http://localhost:4000/videobeaux/programs/utilities/thumbs.html" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="thumbs" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"The friendly multilateral video toolkit built for artists by artists.","headline":"thumbs","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/videobeaux/assets/img/videobeaux.png"}},"url":"http://localhost:4000/videobeaux/programs/utilities/thumbs.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/videobeaux/assets/css/style.css?v=5e23701ed3967d38bab12937d79f95fae74b2a53">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
<!-- start custom head snippets, customize with your own _includes/head-custom.html file -->
<!-- Setup Google Analytics -->
<!-- You can set your favicon here -->
<!-- link rel="shortcut icon" type="image/x-icon" href="/videobeaux/favicon.ico" -->
<!-- end custom head snippets -->
</head>
<body>
<div class="wrapper">
<header>
<h1><a href="http://localhost:4000/videobeaux/">videobeaux</a></h1>
<img src="/videobeaux/assets/img/videobeaux.png" alt="Logo" />
<p>The friendly multilateral video toolkit built for artists by artists.</p>
<p class="view"><a href="https://github.com/schwwaaa/videobeaux">View the Project on GitHub <small>schwwaaa/videobeaux</small></a></p>
</header>
<section>
<h1 id="thumbs">thumbs</h1>
<h2 id="description">Description</h2>
<p>Generates thumbnails or contact sheets by sampling frames at chosen intervals for previews, galleries, or QC review.</p>
<h2 id="purpose">Purpose</h2>
<p>The <code class="language-plaintext highlighter-rouge">thumbs</code> program creates frame-based preview images from video sources.<br />
It can generate:</p>
<ul>
<li>evenly spaced thumbnails,</li>
<li>scene-changebased extractions,</li>
<li>tiled contact sheets,</li>
<li>annotated or timestamped frames for analysis,<br />
making it ideal for QC, archives, design references, and preview libraries.</li>
</ul>
<h2 id="how-it-works">How It Works</h2>
<ol>
<li><strong>Frame Sampling</strong><br />
Choose between:
<ul>
<li><code class="language-plaintext highlighter-rouge">fps</code> sampling (uniform intervals), or</li>
<li><code class="language-plaintext highlighter-rouge">scene</code> detection (generate thumbnails where major scene changes occur).</li>
</ul>
</li>
<li><strong>Scene Thresholding</strong><br />
<code class="language-plaintext highlighter-rouge">scene_threshold</code> determines sensitivity to cuts, edits, or brightness shifts.</li>
<li><strong>Layout &amp; Tiling</strong>
<ul>
<li><code class="language-plaintext highlighter-rouge">tile</code> controls grid layout (e.g., <code class="language-plaintext highlighter-rouge">5x5</code> contact sheets).</li>
<li><code class="language-plaintext highlighter-rouge">scale</code> sets thumbnail size.</li>
</ul>
</li>
<li><strong>Labels &amp; Timestamps</strong>
<ul>
<li><code class="language-plaintext highlighter-rouge">timestamps</code> includes frame timestamps.</li>
<li><code class="language-plaintext highlighter-rouge">label</code> adds custom text per thumbnail.</li>
</ul>
</li>
<li><strong>Styling Options</strong><br />
Background color, margins, padding, and font selection allow branding/QC annotation.</li>
<li><strong>Export Options</strong>
<ul>
<li>Output directory (<code class="language-plaintext highlighter-rouge">outdir</code>)</li>
<li>Output filename (<code class="language-plaintext highlighter-rouge">outputfile</code>)</li>
<li>Image format (JPEG/PNG)</li>
<li>JPEG quality control</li>
</ul>
</li>
</ol>
<h2 id="program-template">Program Template</h2>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>videobeaux -P thumbs \
-i input.mp4 \
-o output.mp4 \
--fps VALUE \
--scene VALUE \
--scene_threshold VALUE \
--tile VALUE \
--scale VALUE \
--timestamps VALUE \
--label VALUE \
--fontfile VALUE \
--bg VALUE \
--margin VALUE \
--padding VALUE \
--outdir VALUE \
--outputfile VALUE \
--image_format VALUE \
--jpeg_quality VALUE
</code></pre></div></div>
<h2 id="arguments">Arguments</h2>
<ul>
<li><strong>fps</strong> — Frames per second to sample for thumbnail extraction.</li>
<li><strong>scene</strong> — Enables scene-detection-based thumbnail generation (<code class="language-plaintext highlighter-rouge">true/false</code>).</li>
<li><strong>scene_threshold</strong> — Sensitivity for detecting scene cuts. Lower = more cuts detected.</li>
<li><strong>tile</strong> — Contact sheet layout (e.g., <code class="language-plaintext highlighter-rouge">4x4</code>, <code class="language-plaintext highlighter-rouge">6x8</code>).</li>
<li><strong>scale</strong> — Size of each thumbnail (percentage or pixel dimension).</li>
<li><strong>timestamps</strong> — Adds timestamps onto each thumbnail (<code class="language-plaintext highlighter-rouge">true/false</code>).</li>
<li><strong>label</strong> — Custom label text rendered onto each frame.</li>
<li><strong>fontfile</strong> — Path to a custom font file for labels.</li>
<li><strong>bg</strong> — Background color for contact sheets (CSS-style hex or color name).</li>
<li><strong>margin</strong> — Outer margin around thumbnails or the full sheet.</li>
<li><strong>padding</strong> — Spacing between individual thumbnails.</li>
<li><strong>outdir</strong> — Directory where generated images will be saved.</li>
<li><strong>outputfile</strong> — Base name for the contact sheet or exported images.</li>
<li><strong>image_format</strong> — Output format (<code class="language-plaintext highlighter-rouge">jpg</code>, <code class="language-plaintext highlighter-rouge">png</code>, etc.).</li>
<li><strong>jpeg_quality</strong> — JPEG quality (0100).</li>
</ul>
<h2 id="real-world-example">Real World Example</h2>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>videobeaux -P thumbs \
-i myvideo.mp4 \
-o thumbs_styled.mp4 \
--fps 1 \
--scene false \
--scene_threshold 0.4 \
--tile 5x5 \
--scale 320 \
--timestamps true \
--label "Preview Sheet" \
--fontfile /path/to/font.ttf \
--bg "#000000" \
--margin 20 \
--padding 10 \
--outdir thumbs_output \
--outputfile contactsheet \
--image_format jpg \
--jpeg_quality 90
</code></pre></div></div>
<h2 id="technical-notes">Technical Notes</h2>
<ul>
<li>Scene detection uses FFmpegs <code class="language-plaintext highlighter-rouge">select='gt(scene,threshold)'</code> filter logic.</li>
<li>High <code class="language-plaintext highlighter-rouge">tile</code> counts produce dense sheets but increase render time.</li>
<li><code class="language-plaintext highlighter-rouge">scale</code> affects memory usage when generating many thumbnails.</li>
<li>Custom fonts must be accessible to ffmpegs <code class="language-plaintext highlighter-rouge">drawtext</code> filter.</li>
<li>Using PNG avoids compression artifacts; JPEG is faster &amp; smaller.</li>
</ul>
<h2 id="recommended-usage">Recommended Usage</h2>
<ul>
<li>QC review workflows to quickly scan for artifacts.</li>
<li>Preview libraries for editors, designers, or curators.</li>
<li>Thumbnail generation for apps, web galleries, or dataset creation.</li>
<li>Scene-change visualization for film analysis.</li>
</ul>
<h2 id="quality-tips">Quality Tips</h2>
<ul>
<li>For clean contact sheets, use PNG for lossless quality.</li>
<li>For large batches, use JPEG (quality 8090) for faster export.</li>
<li>Adjust <code class="language-plaintext highlighter-rouge">scene_threshold</code> to balance between too many vs. too few scene hits.</li>
<li>Use higher <code class="language-plaintext highlighter-rouge">scale</code> values for detailed thumbnails, smaller for overview sheets.</li>
</ul>
</section>
<footer>
<p>This project is maintained by <a href="https://github.com/schwwaaa">schwwaaa</a></p>
<p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
<script src="/videobeaux/assets/js/scale.fix.js"></script>
</body>
</html>