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>
This commit is contained in:
128
docs/disk_cleanup/videos/LOSSLESS_VIDEO_COMPRESSION_GUIDE.md
Normal file
128
docs/disk_cleanup/videos/LOSSLESS_VIDEO_COMPRESSION_GUIDE.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Сжатие видео: lossless и почти lossless
|
||||
|
||||
Гайд для `ffmpeg` с акцентом на две задачи:
|
||||
- **строго без потерь** (математический lossless);
|
||||
- **существенно меньше размер** с визуально очень близким качеством.
|
||||
|
||||
## Ключевое правило
|
||||
|
||||
Нельзя одновременно гарантировать:
|
||||
1) **существенно меньший размер**,
|
||||
2) **строго нулевые потери**.
|
||||
|
||||
Для реально меньших файлов обычно используют режим "почти lossless" (visually lossless).
|
||||
|
||||
## Быстрый выбор режима
|
||||
|
||||
- Нужен архив "бит-в-бит по кадрам" -> `x265 lossless` или `x264 lossless`.
|
||||
- Нужен заметно меньший размер и хорошая совместимость (QuickTime, мессенджеры) -> `x264 CRF 18-20`.
|
||||
|
||||
---
|
||||
|
||||
## 1) Проверка исходника
|
||||
|
||||
```bash
|
||||
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)
|
||||
|
||||
```bash
|
||||
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, совместимее)
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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 Существенно меньше, но визуально близко
|
||||
|
||||
```bash
|
||||
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. Проверь контейнер:
|
||||
```bash
|
||||
ffprobe -v error "video.mp4"
|
||||
```
|
||||
2. Перемести метаданные в начало файла:
|
||||
```bash
|
||||
ffmpeg -i "video.mp4" -c copy -movflags +faststart "video_fixed.mp4"
|
||||
```
|
||||
3. Если кодек не поддерживается, перекодируй в H.264 (`libx264`) с `yuv420p`.
|
||||
Reference in New Issue
Block a user