decktalk build --silent first. It spends no credits,
and it shows if the problem is in the cues, the pages, or the assembly. If the project has a voiced
build, rehearse in a copy of the project. A silent build stops on voiced takes, because it would empty the narration cache, as
A silent build and a voiced build
explains.
Find your message
setup, doctor, and keys
playwright install failed in setup
Cause. Playwright could not download Chromium or, on Linux, its system libraries. The output above
the error shows the reason.
Fix.
- If the output names a network or proxy problem, set
PLAYWRIGHT_DOWNLOAD_HOSTas Playwright documents. - If you are on Linux, run
decktalk setupas a user who can use sudo. - Run
decktalk setupagain.
KaTeX download failed in setup
setup prints KaTeX download failed (<reason>). Projects will load it from a CDN instead. and still
exits 0.
Cause. setup could not download the KaTeX release. Pages then load KaTeX from a CDN, which fails
offline.
Fix.
- When the machine is online, run
decktalk setupagain. - Run
decktalk doctorand check that thekatexrow isok.
MISSING or warning in doctor
Cause. A tool is not installed. The detail says which one and tells you to run decktalk setup.
- If
chromiumshowsMISSING, Chromium does not launch. - If
ffmpegshowsMISSING, no ffmpeg exists inDECKTALK_FFMPEG, thestatic-ffmpegdownload, orPATH. - If
katexshowswarning, the KaTeX cache is empty. Pages load KaTeX from a CDN until you runsetup.
- Run
decktalk setup. - Run
decktalk doctoragain.
doctor exits 1 on a MISSING row. A warning row exits 1 only with --strict.
More. decktalk doctor
KaTeX is not cached in init
Cause. init ran before setup cached KaTeX. init then writes CDN tags into deck/index.html,
and equations do not render offline.
Fix.
- Run
decktalk setup. - Run
decktalk initagain into a new, empty directory.
is not empty in init
init prints <dir> is not empty (pass force to write into it anyway).
Cause. The target directory already has files.
Fix.
- If you want a new project, pass an empty or new directory.
- If you want to write into this directory, add
--force.--forceoverwrites files that the scaffold also has.
decktalk init
must be letters in init
init prints project name '<name>' must be letters, digits, dots, dashes or underscores.
Cause. The project name starts with a character that is not a letter or digit, or has another
character. The default name is the directory name.
Fix.
- Pass a valid name with
--name, such as--name my-lesson.
decktalk init
not set in narrate
A voiced run prints ELEVENLABS_API_KEY, ELEVENLABS_VOICE_ID not set. or one of the two names.
Cause. The key or the voice id is missing. A value that starts with <, such as <voice-id>,
counts as unset.
Fix.
- If the project has no
.env, runcp .env.example .env. - Replace both placeholder values in
.env. - Run the command again.
HTTP 401 or HTTP 402 in narrate
The error reads HTTP <code> from https://api.elevenlabs.io/v1/text-to-speech/<voice id>/with-timestamps: <detail>.
Cause.
- A
401means that the key is wrong or was revoked. - A
402or a quota message means that the plan has no characters left, or that the voice needs a paid plan.
- If the code is 401, copy a new key into
.env. - If the code is 402, check the plan’s character balance with ElevenLabs.
- Run
decktalk narrate --dry-runto see the exact text that a build sends.
could not reach in narrate
Cause. The machine has no route to the speech provider. The reason follows the URL.
Fix.
- Check the network connection and any proxy.
- If you only need a rehearsal, run
decktalk build --silentin a copy of the project.
Project files
decktalk.toml not found in any command
Cause. The command did not run in a project directory, and --project was not given.
Fix.
- Run
cdinto the project directory. - If there is no project yet, run
decktalk init DIR.
-p DIR instead.
More. Global options
unknown table(s) in decktalk.toml
The error reads decktalk.toml: unknown table(s) ['<name>']; known: [...].
Cause. A top-level table name has a typo, or it is not a DeckTalk table.
Fix.
- Compare the name with the known list in the error.
- Rename or remove the table.
ignoring unknown key in decktalk.toml.
More. Load rules
ignoring unknown key in decktalk.toml
- If the warning suggests a key, rename the key to that name.
- If the warning says the key applies only to a page or clip section, move it to that kind of section.
- Run the command again and check that the warning is gone.
must be in decktalk.toml
- Look up the key’s type in decktalk.toml.
- Change the value to that type.
invalid tuning value in decktalk.toml
Cause. A tuning field in decktalk.toml, the per-machine file, or a DECKTALK_<TABLE>_<FIELD>
variable has a value of the wrong type.
Fix.
- Look up the field’s type in Configuration.
- Correct the value where you set it.
narrate
unfilled placeholders in narrate
The error reads unfilled placeholders ['<NAME>'] in the script; fill them or pass allow_placeholders.
Cause. The script still has a [CAPS] placeholder, and the run is voiced.
Fix.
- Run
decktalk narrate --dry-runto list every placeholder. - Replace each placeholder in
script.md. - If you want to voice the text as it is, pass
--allow-placeholders.
no spoken sections match in narrate
--only names a clip section or a number with no script heading.
Fix.
- Pass a number from the list in the error.
decktalk narrate
have no [[section]] in decktalk.toml in narrate
Cause. The script has a ## N. heading with no [[section]] table of the same number.
Fix.
- If the section is new, add a
[[section]]table with thatnumber. - If the number is a typo, fix the heading in
script.md.
have no narration yet in narrate
Cause. narrate --only voiced some sections, and other spoken sections have no audio yet. The
timeline then covers only the sections that have audio.
Fix.
- Run
decktalk narratewith no--only.
holds voiced takes in narrate
decktalk narrate --silent or decktalk build --silent in a project with voiced takes. A silent
run would write click tracks over the voiced mp3 files and replace the manifest. The next voiced build would then
spend credits on every section.
Fix.
- If you want to rehearse, copy the project and run the silent build in the copy.
- If you want to drop the voiced takes, run the same command with
--force.
A section opens on its first word
Cause.narrate removes a direction before the first words of a section, [pause N] included. So the
first word plays as the section’s first frame appears.
Fix.
- Set
lead_secondson the page section indecktalk.toml.narratejoins that much silence in before the take and sends no request. - Run
decktalk build --only N, so the recording covers the lead.
beats
phrase not found in beats
- The phrase has a typo.
- The script writes a number as words, and the phrase uses digits, or the other way around.
- The phrase uses another word form, such as “rates” for “rate”.
- A hyphen joins two words into one token.
- The phrase has a curly apostrophe. Matching removes it, but the spoken word keeps a straight one.
- Open
build/audio/NN-slug.words.jsonfor the section. - Find the words as the voice says them.
- Copy those words into the cue’s
onvalue incues.json. - Run
decktalk beats.
--allow-unresolved. A step whose cues are all
unresolved never mounts.
More. Matching rules
not in its page in beats
beats looks for each cue id in its page in quotes or backticks, and did not find this
one. Either the id in cues.json has a typo, or no step uses the cue.
Fix.
- If the id has a typo, fix it in
cues.json. - If no step uses the cue, add
data-cue="<id>"to the element in the page. - If the page builds its cue ids at run time, pass
--allow-unknown.
cues object also counts as a mention.
More. Cue mismatches
UNRESOLVED in beats or verify
Cause.
- In
beats --json, a note has the verdictUNRESOLVEDwhen a phrase is not found or the section has no words. - In
verify, a cue named on the command line is not inbeats.json. The row readsUNRESOLVED: the cue is not in beats.json.
- If
beatsprinted it, followphrase not foundin beats. - If
verifyprinted it, check theSECTION:CUEspelling againstbuild/audio/beats.json. - If the cue is new, run
decktalk beatsbeforeverify.
decktalk verify
UNKNOWN in beats
Cause. In beats --json, a note has the verdict UNKNOWN when a cue id is not in its page. The
table prints the same note as <cue>: not in <page>.
Fix.
- Follow
not inits page in beats.
decktalk beats
shorter than the visuals need in beats
The note reads speech <S>s is <D>s shorter than the visuals need.
Cause. The section’s speech ends before the min_seconds that cues.json sets for it. This is an
uncertain finding, so beats exits 1 only with --strict.
Fix.
- If the slides need more time, add words or a
[pause N]to the section inscript.md. - If the slides are fine, lower or remove
min_secondsincues.json.
is past the end of the audio in beats
Cause. A cue time is later than the section’s audio, usually because of a large offset key. This
note is not a finding.
Fix.
- Reduce the cue’s
offsetincues.json, or move the cue to an earlier phrase.
occurs N times in this section in beats
The note reads '<phrase>' occurs <N> times in this section, at <T>s, <T>s. The cue uses the first. Set "occurrence" to choose one.
Cause. The cue phrase matches more than one run of the section’s spoken words, and the cue does not set
occurrence. The cue fires on the first match. If you meant a later one, the step appears early, maybe by
many seconds. This note is not a finding, so beats exits 0, even with --strict.
Fix.
- Compare the times in the note with the moment the visual should appear.
- If a later match is right, set
"occurrence"to its position, such as2, incues.json. - If the first match is right, set
"occurrence": 1to keep it and silence the note. - Or make the phrase longer, so it matches only once.
no words in beats
The note reads no words (estimated manifest) or no words (missing words file).
Cause. The section’s words file is empty or missing, so no phrase can resolve. Only $start
resolves.
Fix.
- Run
decktalk narrateagain. For a rehearsal, rundecktalk narrate --silentin a copy of the project. - Run
decktalk beats.
decktalk narrate
is not in decktalk.toml in beats
The error reads cues.json: section <N> is not in decktalk.toml.
Cause. A section key in cues.json has no [[section]] table of the same number.
Fix.
- If the key is a typo, fix it in
cues.json. - If the section is new, add its
[[section]]table.
preflight
NO CHANGE or THIN CHANGE? in preflight
Cause. The frozen frame at the cue differs from the frozen frame before it by less than the [verify]
floors, or by less than thin_change_factor times them. The reveal is small even in its end state, so verify
is likely to read the same on the final mp4.
Fix.
- Open the row’s two PNG files under
build/preflight/NN/. - If the reveal is too small to see, make it larger or give it more contrast in the page.
- If the reveal is small on purpose, mark the cue
"verify": false. Or leave it, and check it by eye after the build.
decktalk preflight, THIN CHANGE? in verify
RUNTIME_OUTDATED in preflight
Cause. The page loads a copy of decktalk-runtime.js from before decktalk preflight. Its catalog has no
cues, so preflight cannot freeze a step just before a cue.
Fix.
- Run
decktalk runtimeto copy the packaged runtime into the project. - Run
decktalk preflightagain.
record, measure, and check
PAGE ERROR in check
record logs [page] NN-scene page error: <text>. build stops after the check table with
<N> section(s) hit a page error while recording. A page with no catalog logs
no window.__decktalk.catalog (is decktalk-runtime.js included, and does the page register a scene?).
Cause. The page threw an uncaught error, or it has no runtime catalog. The usual reasons, most
common first:
- A
rendertemplate has a single backslash, such as\underline, which is a syntax error. - The runtime
<script>comes after theDeckTalk.scenecalls. - The page does not load
decktalk-runtime.js.
- Open the page in a browser with
?scene=N&hud=1. - Read the error in the browser console.
- Fix the page.
- Record the section again.
STALLED in check
check prints STALLED <ms>ms. record logs frame stall(s) after narration t=0 and
recording section NN again.
Cause. The machine was too busy to paint, so a reveal was recorded late. After narration t=0, the
page saw a gap between two frames longer than [align] stall_ms (150).
Fix.
- Close other work, or use a less busy machine.
- Record the section again.
record already tried again up to [record] retries (2) times. A long first draw under the cover,
before t=0, is not a stall.
More. Record one section again
TRUNCATED in check
Cause. The recording is shorter than requested by more than [align] truncated_slack_seconds
(0.5). Chromium was stopped, or the machine stalled.
Fix.
- Record the section again.
- Run
decktalk check.
build exits 0 on TRUNCATED, so a script must run decktalk check after the build.
More. Record one section again
NO COVER in measure or check
measure logs no magenta cover found; alignment is a guess, and its method column starts with
NO COVER.
Cause. measure found no magenta cover in the first [align] scan_seconds (4.0) of the recording,
so t=0 is a guess. The usual reasons:
- The page removes the cover itself.
- A page written by hand starts its clock at load instead of at
DeckTalk.startClock().
- Make sure that the page loads the packaged
decktalk-runtime.js. - If you upgraded DeckTalk, run
decktalk runtime. - If the machine is very slow, raise
[record] min_lead_seconds. - Record the section again.
measure uses the first painted frame plus settle_seconds. If no frame is painted,
it uses 1.1 s plus settle_seconds.
measure scans only the first [align] scan_seconds. If narration t=0 comes later, measure still
reports cover, and every reveal is late. If you raise min_lead_seconds near 4, raise scan_seconds too.
More. The handshake
BLACK? in check
Cause. The brightest luma at the middle of the recording (MAX50) is below [align] black_ymax
(40). Usually the page threw before it drew anything, or the slide is dark on purpose.
Fix.
- Open the page in a browser with
?scene=N&hud=1. - If the page is blank, read the browser console and fix the error.
- If the slide is dark on purpose, do nothing.
BLACK?exits 1 only with--strict.
decktalk check
KATEX? in check
Cause. A page warning mentions KaTeX or data-tex. One of two warnings, most common first:
data-tex could not be parsed: "<tex>". A backslash inside arendertemplate is single.KaTeX did not load within 5 s, so [data-tex] elements stay plain text. The page loads KaTeX from a CDN, which fails offline.
- If a value did not parse, write every backslash twice inside the
renderbackticks. - If KaTeX did not load, run
decktalk setup. - Run
decktalk doctorand check that thekatexrow isok. - Copy the cached
katexdirectory thatdoctorprints intodeck/katex/. - In
deck/index.html, replace the two CDN tags with the local tags below. - Record the section again.
deck/index.html has KaTeX tags in the scaffold. deck/lesson.html does not load KaTeX.
More. Build in CI and offline
no narration span yet in record
Cause. A page section has no span in timeline.json. Usually the script has no ## N. heading for
that section, or narrate has not run since you added it.
Fix.
- If the heading is missing, add
## N. Titletoscript.md. - Run
decktalk narrate.
A section is early or late by a fixed amount
Cause. Nothing is printed. The recording’s t=0 is wrong, so every reveal in the section is off by the same amount. Fix.- If
assembleprintedSTALE MEASUREMENT, followSTALE MEASUREMENTin assemble. - Open
build/rec/NN-scene.jsonand readlead_method. - If it starts with
NO COVER, followNO COVERin measure or check. - Record the section again.
assemble
missing; slate for in assemble
clip names does not exist, so a titled slate plays for slate_seconds.
The section in the sample sets optional = true, so its warning ends with
the section is optional, so --strict allows the slate. A section without optional prints only
(drop your clip at that path).
Fix.
- If you have the video, put it at the path in
clip. - If the section sets
optional = true, delete that line after the clip is in place. - If you do not want the clip, delete the section from both
decktalk.tomlandscript.md.
clip missing or recording missing in assemble
--strict turns a missing recording into an error. It does the same for a missing clip,
unless the clip section sets optional = true.
Fix.
- If a clip is missing, put the video at the path in
clip. - If you want the slate for now, set
optional = trueon the clip section. - If a recording is missing, record the section again.
using black in assemble
Cause. A page section has no recording, so assemble plays black for that section.
Fix.
- Record the section again.
STALE MEASUREMENT in assemble
measure has not read this recording since it was recorded. The sidecar has no lead_in_seconds,
its lead_in_hash belongs to another take, or the webm is newer than the sidecar. The cut trims at the wrong
point, so every reveal in the section is early or late by the same amount. With --strict, assemble stops.
Fix.
- Run
decktalk measure --only Nfor the section in the message. - Run
decktalk assemble.
build/rec/NN-scene.json
has no span in in assemble
Cause. A page section has no span in timeline.json. The script has no heading for it, or
narrate has not run since you added it.
Fix.
- If the heading is missing, add
## N. Titletoscript.md. - Run
decktalk build.
underscore missing in assemble
[mix] names an underscore or ambience file that does not exist. The video plays without
it. The scaffold keeps both keys in comments, and decktalk soundscape generates both files.
Fix.
- If you want the sound, run
decktalk soundscapeor put your own file at the path. - If you do not want it, remove the key from
[mix].
unresolved; skipped in assemble
assemble logs marker '<name>' unresolved; skipped or sfx <file>: cue '<cue>' in section <N> is unresolved; skipped.
Cause. A marker’s phrase or a sound effect’s cue did not resolve, so assemble left it out.
Fix.
- If a marker is skipped, check its
sectionandonvalues in the markers file. - If a sound effect is skipped, check that
beatsresolved its cue in that section. - Run
decktalk assemble.
markers.json
[loud] skipped in assemble
assemble skips the loudness pass. The
clicks keep their level so that verify can find them.
Fix. None is needed. A voiced build runs the loudness pass.
More. Loudness
true peak or integrated loudness in assemble
assemble logs [loud] true peak <X> dBTP is above the <Y> dBTP ceiling or
[loud] integrated loudness <X> LUFS is <D> LU from the <Y> LUFS target.
Cause. After the loudness pass, the voiced mix misses a [mix.loudnorm] target. With --strict,
the miss is an error.
Fix.
- Lower the underscore, ambience, or sound effect levels in
[mix]. - Run
decktalk assemble.
[mix.loudnorm]
verify
BLACK in verify
Cause. The brightest luma 0.2 s after a section start is at most [verify] visible_ymax (60).
Nothing bright is on screen when the section starts.
Fix.
- Make sure that the scene’s first cued step draws something at t=0.
- If a dip to black is long on purpose, raise
[verify] after_dip_seconds.
SPEECH AT CUT in verify
Cause. The narration in the last 0.15 s before a cut is louder than -40 dBFS. The voice was still
speaking when the picture cut.
Fix.
- Raise
[narration] min_tail_secondsto add more silence after the last word.
POP AT CUT in verify
Cause. A section sets carries_previous = true, but its first frame differs from the previous section’s last
frame by more than [verify] max_pop_percent (0.1 percent of the pixels). The picture jumps at the cut. The
usual reasons:
- The page opens in a different state than the previous page ended in, such as a step that is not shown yet.
- An element sits at a different position or size in the two pages.
- The previous section’s last step fires after its narration ends, so its recording ends early.
- Run
decktalk shots --section N --at 0for this section, and compare it with the last frame of the previous section. - Make the page’s opening state match the previous page’s final state.
- If the jump is intended, remove
carries_previousfrom the section.
NO CHANGE in verify
Cause. The picture did not change enough across the cue, or it changed no more than it was already changing.
The usual reasons:
- The reveal is very small or very slow.
- The reveal changes only color at the same brightness.
verifycompares luma only.
- Run
decktalk shots --section N --at S, whereSis just after the value in thecuecolumn. - If the reveal is subtle on purpose, mark the cue
"verify": falseincues.json. - If the reveal is slow, lengthen
[verify] probe_delays.
verify logs another cue is close
for it. A slow reveal may not finish inside a short gap. Check such a reveal by eye.
More. Change test, Close cues
THIN CHANGE? in verify
Cause. The cue passed the change test, but only just. Its chg % is below 0.3, or its chg % minus its
ctl % is below 0.3. Those limits are [verify] thin_change_factor (3) times the floors of 0.1. A slightly
smaller reveal, or a little more motion elsewhere, would read NO CHANGE. This is an uncertain finding, so
verify exits 1 on it only with --strict.
Fix.
- Run
decktalk shots --section N --at S, whereSis just after the value in thecuecolumn. - If the reveal is too small to see, make it larger or give it more contrast in the page.
- If the reveal is small on purpose and plainly visible, leave it. Or mark the cue
"verify": false. - To turn the warning off, set
[verify] thin_change_factor = 1.
OFF CUE in verify
This example shows the format of an OFF CUE row.
a/v column is past 120 ms.
The table prints no distance, so compare the columns with those limits.
- A negative offset column means that something moved before the cue. Often an earlier reveal is still animating, or a
data-atelement appeared at the mount. - A positive offset column of more than a frame or two means that the reveal has its own delay, such as a CSS transition.
- Run
decktalk shots --section N --at Sfor times around the value in thecuecolumn. - Find the early motion or the delay in the frames.
- If the delay is intended, raise
[verify] max_offset_frames.
a/v column is past its limit, see A large a/v value in verify.
More. Onset and offset
A large a/v value in verify
Cause. Nothing but OFF CUE is printed. The audio and picture in the final file are out of step,
or a louder sound effect sits near the cued word.
Fix.
- Build with
decktalk build --silent --nomixto rule out the soundscape. - Open
build/rec/NN-scene.jsonand check thatlead_methodstarts withcover. - Record the section again.
- Check that the offset column alone is small.
a/v column compares the picture with that
click. The click and the cue come from the same word time. A large value therefore points at the
recording or the mix.
More. verify
NO_CLICK in verify
Cause. After a silent build, verify found no click within [verify] click_search_seconds (0.25)
of the cued word’s start. The a/v column shows -, and the JSON reason is NO_CLICK.
Fix. None is needed. verify still judges the cue on its offset column.
A $end cue gets NO_CLICK when its last word is longer than click_search_seconds. $end sits on
the end of the last word, and clicks sit on word starts.
More. verify
skipped in verify
Cause. verify measured nothing for the cue. The reason follows the verdict, and a skipped row
never fails.
Fix.
- Find the reason in Skipped rows, and apply its fix.
malformed check in verify
The error reads malformed check '<text>'; want SECTION:CUE, e.g. 3:3.1draw.
Cause. A cue argument does not start with a section number and a colon.
Fix.
- Write each cue as
SECTION:CUE, such as8:7.1checked.
decktalk verify
need build/out/NN-section.mp4 files in verify
- Run
decktalk build --silent, ordecktalk assembleif the recordings exist. - Run
decktalk verify.
decktalk build
is not a section in decktalk.toml in assemble or verify
build/out holds a section video whose number is not a section in decktalk.toml. An earlier build
usually left it before you renumbered or removed sections. assemble and verify read only the sections in
decktalk.toml, so the file changes nothing.
Fix.
- If you renumbered or removed the section, delete the file.
build/out/
A typewriter reveal fails the cue check
Cause. Nothing butNO CHANGE is printed. An element with data-type or data-sync appears a
little at a time, so the first probe sees too little change.
Fix.
- Give the element’s container a reveal that appears at once on the same cue, such as
data-fx="fade". - Keep
data-typeordata-syncon the text inside it.
words and clip
timeline.json not found in words or clip
- Run
decktalk narrate, ordecktalk build --silent. - Run the command again.
decktalk words
has no section video in clip
clip cuts from the section video that assemble writes, and the section has none.
Fix.
- Run
decktalk build --silent, ordecktalk assembleif the recordings exist. - Run
decktalk clipagain.
decktalk clip
is a clip section in clip
clip has no mp3 to cut.
Fix.
- Run
decktalk status. Each page section row names its page, and each clip section row starts withclip. - Run
decktalk clipwith the number of a page section.
decktalk clip
cuts the word in clip
--from or --to falls inside a spoken word. The clip keeps the part of the word inside the span, but the
words file has no entry for the word, so no caption shows it.
Fix.
- Run
decktalk words --only Nfor the section. - Move
--frombefore the word’s start, or--toafter the word’s end, into the silence next to the word. - Run
decktalk clipagain.
decktalk words
Pages in a browser
The page writes each warning to the browser console with the prefixdecktalk:. During a recording,
record logs it as [page] NN-scene <warning> and writes it to the sidecar.
data-sync text not found in the spoken words in a page
Cause. The text of a data-sync element matches no run of the section’s spoken words, so the
element appears whole. Usually the slide writes a number as digits and the script writes it as words.
Fix.
- Compare the element’s text with the sentence in
script.md. - Make the words match. Case and punctuation do not matter.
matches no element, handler, or step in a page
data-cue, no handler is registered for it, and no
step has that id. beats did not catch it, because the id still appears in quotes in the page, such as
a key of a step’s cues object.
Fix.
- Add
data-cue="<id>"to the element that should appear.
unknown cue id in a page
The warning reads unknown cue id <id> (no step id or cues list matches it).
Cause. The page received a cue in ?beats= that no step in the playing scene owns.
Fix.
- Check the id against the step ids and their
cueslists. - Add the id to the
cueslist of the step that should own it.
owns no cue in a page
The warning reads step "<id>" owns no cue in ?beats=, so it never appears.
Cause. In cue mode, a step mounts at its earliest cue. This step owns none of the section’s cues.
Fix.
- Add a cue for the step to
cues.json.
cues instead.
More. Cue mismatches
A page is empty, or window.__decktalk is missing
Cause. Nothing is printed. The page does not load decktalk-runtime.js, or its runtime <script>
tag comes after the DeckTalk.scene calls.
Fix.
- Load
decktalk-runtime.jsbefore anyDeckTalk.scenecall. - Open the page in a browser to check the scene index.
Speed
A build is slow
Cause. Nothing is printed.record plays each page section in real time, and encoding adds more
time.
Fix.
- If you changed one section, run
decktalk build --only N. - For drafts, set
DECKTALK_VIDEO_PRESET=veryfast, orpreset = "veryfast"under[video]. - For the final video, go back to the default preset.
TimeoutError in shots
--at value past 30 s waits longer than the browser’s 30 s limit.
Fix.
- Use
--atvalues of 30 s or less. - For a later moment in a long section, take a frame from the final video instead.
decktalk shots
Related
If no entry fits, open an issue. Include the output ofdecktalk doctor and the [[section]] tables
involved.