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>
3.8 KiB
3.8 KiB
Сжатие видео: lossless и почти lossless
Гайд для ffmpeg с акцентом на две задачи:
- строго без потерь (математический lossless);
- существенно меньше размер с визуально очень близким качеством.
Ключевое правило
Нельзя одновременно гарантировать:
- существенно меньший размер,
- строго нулевые потери.
Для реально меньших файлов обычно используют режим "почти 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 или мессенджере:
- Проверь контейнер:
ffprobe -v error "video.mp4"
- Перемести метаданные в начало файла:
ffmpeg -i "video.mp4" -c copy -movflags +faststart "video_fixed.mp4"
- Если кодек не поддерживается, перекодируй в H.264 (
libx264) сyuv420p.