| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After ffmpeg exits successfully, run ffprobe against the temporary
output file to confirm it is a valid, playable media file before
replacing the original. If the probe fails the temporary file is removed
and the encode is treated as a runtime failure, leaving the original
untouched.
This guards against cases where ffmpeg exits 0 but has written a
truncated or corrupt container (e.g. due to a disk-full condition
mid-write, a codec bug, or a preset producing an unreadable stream).
The check is enabled by default and can be disabled via
--no-verify-output or [encoding] verify_output = false in config.toml
for large batch jobs on trusted encoders where the extra ffprobe
round-trip is undesirable.
The --continue flag is honoured: a failed integrity check counts as a
runtime failure for the purposes of deciding whether to proceed to the
next file.
Docs, man page, bash completion, and README updated accordingly.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add input_frame_rate, input_fps, and output_gop_size to the set of
variables available to preset files at source time.
input_frame_rate is the raw ffprobe fraction (e.g. 30000/1001).
input_fps rounds that fraction to the nearest integer via awk.
output_gop_size is derived as roughly five seconds of video (input_fps *
5), capped at 300 frames.
The ffprobe invocation is extended to request r_frame_rate alongside the
existing codec_name and pix_fmt entries; a missing frame rate is now
treated as a hard error. Dry-run and verbose output are updated to
display the new values. Documentation (header comment, --help text, man
page, README) is updated accordingly.
|
| |
|
|
|
|
|
|
|
|
|
| |
The contact address dennis.fink@c3l.lu has been replaced with
me+coding@dennisfink.me across all files where it appeared:
SPDX-FileCopyrightText, AUTHOR constant, --version output,
README footer, LICENSE file, and the man page AUTHOR section.
SPDX licence headers were also added to transcode.sh.1 and
transcode.sh.bash-completion to bring all files into full
REUSE compliance.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a structured config file so common defaults can live in one place
instead of being repeated in aliases or shell wrappers. CLI flags keep
precedence, which keeps one-off overrides predictable.
Use tomlq only when a config file is present, and fail early on missing
dependencies or invalid TOML so configuration mistakes do not silently
change encode behavior.
Move the persistent skip-codec list from the legacy skip.conf file to
[skip] codecs in config.toml. Config codecs are merged with --skip-codec
so global defaults and per-run skips can be combined.
Document the new format in the README and man page, update dependency
notes, and extend bash completion for config-file paths and the new
negative boolean flags.
BREAKING CHANGE: skip.conf is no longer read for codec skips. Migrate
its entries to [skip] codecs in config.toml and remove the old file.
BREAKING CHANGE: --encodefile and --encodefile= are replaced by
--encode-file and --encode-file=. Update scripts, aliases, and
completion usage to use the hyphenated option name.
|
| |
|
|
|
|
|
| |
Previously only output_pixel_format was mentioned. All three variables
(input_codec, input_pixel_format, output_pixel_format) are now listed
with descriptions in the script header comment, the README, and the
man page.
|
| |
|
|
|
|
|
|
|
|
|
| |
Both the README and the man page now explain that the script always
passes -map 0, -map_metadata 0, -map_chapters 0, and -c copy to
ffmpeg before appending the preset's ffargs array. This context is
important for preset authors, who only need to override the streams
they intend to re-encode.
Also fix a minor blockquote rendering issue in the README (missing
blank line before the fenced code block in the PATH note).
|
|
|
Batch transcode helper for media files using ffmpeg. Encoding parameters
are supplied by user-defined preset files (shell snippets that set an
`ffargs` array) stored under
${XDG_CONFIG_HOME:-$HOME/.config}/transcode.sh/presets/.
Key capabilities:
- Probes input codec and pixel format via ffprobe; derives an output
pixel format that preserves chroma subsampling and bit depth.
- Per-user and per-invocation codec skip lists to leave already-encoded
files untouched.
- Atomic in-place replacement: encodes to a temp file in the same
directory, then renames on success.
- --only-if-smaller: discard the result if it is larger than the
original.
- --saving: append filename, original/new sizes and percentage saved to
a log file after each successful encode.
- --dry-run, --verbose, --quiet, --nice and --continue flags.
- Respects the NO_COLOR standard.
- Script hardening: strict PATH, safe IFS, errtrace, nounset, pipefail.
Also included:
- Man page (transcode.sh.1)
- Bash completion script (transcode.sh.bash-completion)
- README.md
- .gitmessage commit message template
License: BSD-3-Clause
|