Files
local_machine/docs/disk_cleanup/videos/LOSSLESS_VIDEO_COMPRESSION_GUIDE.md
ahauimix 1938b7c743 Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 08:12:19 +03:00

3.8 KiB
Raw Blame History

Сжатие видео: lossless и почти lossless

Гайд для ffmpeg с акцентом на две задачи:

  • строго без потерь (математический lossless);
  • существенно меньше размер с визуально очень близким качеством.

Ключевое правило

Нельзя одновременно гарантировать:

  1. существенно меньший размер,
  2. строго нулевые потери.

Для реально меньших файлов обычно используют режим "почти lossless" (visually lossless).

Быстрый выбор режима

  • Нужен архив "бит-в-бит по кадрам" -> x265 lossless или x264 lossless.
  • Нужен заметно меньший размер и хорошая совместимость (QuickTime, мессенджеры) -> x264 CRF 18-20.

1) Проверка исходника

ffprobe -v error -show_entries format=filename,format_name,duration,size,bit_rate -of default=nw=1:nk=0 "input.mov"

2) Строгий lossless (HEVC / x265)

ffmpeg -i "input.mov" \
  -map 0 \
  -c:v libx265 -x265-params lossless=1 \
  -preset medium \
  -c:a copy \
  -movflags +faststart \
  "output_lossless_x265.mp4"

Примечания:

  • lossless=1 — математически без потерь;
  • -c:a copy — аудио без перекодирования;
  • размер может стать больше исходника.

3) Строгий lossless (H.264, совместимее)

ffmpeg -i "input.mov" \
  -map 0 \
  -c:v libx264 -crf 0 -preset medium \
  -pix_fmt yuv420p \
  -c:a copy \
  -movflags +faststart \
  "output_lossless_x264.mp4"

4) Практичный режим: существенно меньше, визуально очень близко

Рекомендуемый профиль для QuickTime:

ffmpeg -i "input.mov" \
  -map 0 \
  -c:v libx264 -preset slow -crf 20 \
  -profile:v high -pix_fmt yuv420p \
  -c:a copy \
  -movflags +faststart \
  "output_smaller.mp4"

Подстройка качества:

  • crf 18 — выше качество, больше размер;
  • crf 20 — хороший баланс;
  • crf 22 — меньше размер, больше риск артефактов.

5) Как проверить, что lossless действительно lossless

ffmpeg -i "input.mov" -map 0:v:0 -f framemd5 "input.framemd5"
ffmpeg -i "output_lossless_x265.mp4" -map 0:v:0 -f framemd5 "output.framemd5"
diff "input.framemd5" "output.framemd5"

Если diff пустой — кадры эквивалентны после декодирования.

6) Batch-команда для папки (.mov)

6.1 Строгий lossless

for f in *.mov; do
  ffmpeg -i "$f" \
    -map 0 \
    -c:v libx265 -x265-params lossless=1 \
    -preset medium \
    -c:a copy \
    -movflags +faststart \
    "${f%.mov}_lossless.mp4"
done

6.2 Существенно меньше, но визуально близко

for f in *.mov; do
  ffmpeg -i "$f" \
    -map 0 \
    -c:v libx264 -preset slow -crf 20 \
    -profile:v high -pix_fmt yuv420p \
    -c:a copy \
    -movflags +faststart \
    "${f%.mov}_smaller.mp4"
done

7) Проблемы с открытием файла

Если файл не открывается в QuickTime или мессенджере:

  1. Проверь контейнер:
ffprobe -v error "video.mp4"
  1. Перемести метаданные в начало файла:
ffmpeg -i "video.mp4" -c copy -movflags +faststart "video_fixed.mp4"
  1. Если кодек не поддерживается, перекодируй в H.264 (libx264) с yuv420p.