443 lines
8.6 KiB
Markdown
443 lines
8.6 KiB
Markdown
# Примеры
|
||
|
||
Практические примеры для различных сценариев использования.
|
||
|
||
## Базовые сценарии
|
||
|
||
### Быстрая конвертация с настройками по умолчанию
|
||
|
||
```bash
|
||
avc video.mp4
|
||
```
|
||
|
||
**Результат:**
|
||
- Папка `video/` в текущей директории
|
||
- DASH + HLS манифесты
|
||
- H.264 + AV1 кодеки
|
||
- Автоматические профили качества
|
||
- Постер с 1-й секунды
|
||
- Thumbnail спрайты
|
||
|
||
---
|
||
|
||
### Указание выходной директории
|
||
|
||
```bash
|
||
avc video.mp4 ./public/videos
|
||
```
|
||
|
||
**Структура:**
|
||
```
|
||
public/
|
||
└── videos/
|
||
└── video/
|
||
├── manifest.mpd
|
||
├── master.m3u8
|
||
├── 720p-h264/
|
||
└── ...
|
||
```
|
||
|
||
---
|
||
|
||
## Выбор разрешений
|
||
|
||
### Стандартные веб-разрешения
|
||
|
||
```bash
|
||
avc video.mp4 -r 720,1080
|
||
```
|
||
|
||
**Для кого:** Большинство веб-сайтов
|
||
|
||
**Профили:** 720p, 1080p на 30fps
|
||
|
||
---
|
||
|
||
### Полный спектр качества
|
||
|
||
```bash
|
||
avc video.mp4 -r 360,480,720,1080,1440,2160
|
||
```
|
||
|
||
**Для кого:** Стриминговые платформы типа YouTube/Netflix
|
||
|
||
**Покрытие:** От мобильных до 4K мониторов
|
||
|
||
---
|
||
|
||
### Высокий FPS для игр
|
||
|
||
```bash
|
||
avc gameplay.mp4 -r 720@60,1080@60,1440@120
|
||
```
|
||
|
||
**Для кого:** Игровой контент, стримы
|
||
|
||
**Особенность:** Плавное воспроизведение 60/120 FPS
|
||
|
||
---
|
||
|
||
### Только мобильные разрешения
|
||
|
||
```bash
|
||
avc video.mp4 -r 360,480,720
|
||
```
|
||
|
||
**Для кого:** Мобильные приложения
|
||
|
||
**Преимущество:** Экономия трафика
|
||
|
||
---
|
||
|
||
## Выбор кодеков
|
||
|
||
### Только H.264 (максимальная совместимость)
|
||
|
||
```bash
|
||
avc video.mp4 -c h264
|
||
```
|
||
|
||
**Когда использовать:**
|
||
- Старые браузеры и устройства
|
||
- Гарантированное воспроизведение
|
||
- Safari/iOS (обязательно для HLS)
|
||
|
||
---
|
||
|
||
### Только AV1 (максимальное сжатие)
|
||
|
||
```bash
|
||
avc video.mp4 -c av1
|
||
```
|
||
|
||
**Когда использовать:**
|
||
- Современные браузеры (Chrome 90+, Firefox 90+)
|
||
- Экономия полосы пропускания
|
||
- Ограниченное хранилище
|
||
|
||
**Экономия:** ~40-50% по сравнению с H.264
|
||
|
||
---
|
||
|
||
### Dual codec (лучшая стратегия)
|
||
|
||
```bash
|
||
avc video.mp4 -c dual
|
||
```
|
||
|
||
**Преимущества:**
|
||
- Современные браузеры используют AV1
|
||
- Старые устройства переключаются на H.264
|
||
- Автоматический выбор плеером
|
||
|
||
---
|
||
|
||
## Выбор форматов
|
||
|
||
### Только DASH
|
||
|
||
```bash
|
||
avc video.mp4 -f dash
|
||
```
|
||
|
||
**Для кого:**
|
||
- Веб-плееры: dash.js, Shaka Player, Video.js
|
||
- Android устройства
|
||
- Современные smart TV
|
||
|
||
---
|
||
|
||
### Только HLS
|
||
|
||
```bash
|
||
avc video.mp4 -f hls -c h264
|
||
```
|
||
|
||
**Для кого:**
|
||
- Apple устройства (iPhone, iPad, Mac)
|
||
- Safari браузер
|
||
- Нативная поддержка в iOS
|
||
|
||
**Важно:** HLS лучше работает с H.264
|
||
|
||
---
|
||
|
||
### Оба формата (рекомендуется)
|
||
|
||
```bash
|
||
avc video.mp4 -f both -c dual
|
||
```
|
||
|
||
**Преимущество:** 100% совместимость со всеми устройствами
|
||
|
||
---
|
||
|
||
## Настройка качества
|
||
|
||
### Высокое качество (архивное)
|
||
|
||
```bash
|
||
avc video.mp4 -r 1080,1440,2160 \
|
||
-c dual \
|
||
--h264-cq 18 \
|
||
--av1-cq 25
|
||
```
|
||
|
||
**Для кого:** Архивы, профессиональные видео
|
||
|
||
**Размер:** Большой (~80-90% от исходника)
|
||
|
||
---
|
||
|
||
### Сбалансированное качество
|
||
|
||
```bash
|
||
avc video.mp4 -r 720,1080 \
|
||
-c dual \
|
||
--h264-cq 28 \
|
||
--av1-cq 35
|
||
```
|
||
|
||
**Для кого:** Обычные веб-сайты
|
||
|
||
**Размер:** Средний (~40-50% от исходника)
|
||
|
||
---
|
||
|
||
### Экономия места
|
||
|
||
```bash
|
||
avc video.mp4 -r 480,720 \
|
||
-c av1 \
|
||
--av1-cq 40
|
||
```
|
||
|
||
**Для кого:** Мобильные приложения, ограниченное хранилище
|
||
|
||
**Размер:** Малый (~20-30% от исходника)
|
||
|
||
---
|
||
|
||
## Постеры
|
||
|
||
### Постер с определенной секунды
|
||
|
||
```bash
|
||
# Интересный момент на 30-й секунде
|
||
avc video.mp4 -p 30
|
||
```
|
||
|
||
---
|
||
|
||
### Постер из середины видео
|
||
|
||
Сначала узнайте длительность:
|
||
```bash
|
||
ffprobe -v error -show_entries format=duration \
|
||
-of default=noprint_wrappers=1:nokey=1 video.mp4
|
||
# Вывод: 300.5 (5 минут)
|
||
|
||
# Постер из середины (2:30)
|
||
avc video.mp4 -p 00:02:30
|
||
```
|
||
|
||
---
|
||
|
||
## Реальные сценарии
|
||
|
||
### 1. Корпоративный сайт
|
||
|
||
**Требования:**
|
||
- Несколько разрешений
|
||
- Широкая совместимость
|
||
- Хорошее качество
|
||
|
||
```bash
|
||
avc presentation.mp4 ./public/videos \
|
||
-r 720,1080 \
|
||
-c dual \
|
||
-f both \
|
||
-p 5
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Образовательная платформа
|
||
|
||
**Требования:**
|
||
- Экономия трафика для студентов
|
||
- Разные устройства
|
||
- Много видео
|
||
|
||
```bash
|
||
avc lecture.mp4 ./courses/math-101 \
|
||
-r 360,480,720 \
|
||
-c av1 \
|
||
-f dash \
|
||
--av1-cq 38
|
||
```
|
||
|
||
---
|
||
|
||
### 3. Стриминговый сервис
|
||
|
||
**Требования:**
|
||
- Полный спектр качества
|
||
- 4K контент
|
||
- Высокое качество
|
||
|
||
```bash
|
||
avc movie.mp4 ./cdn/movies/avatar \
|
||
-r 360,720,1080,1440,2160 \
|
||
-c dual \
|
||
-f both \
|
||
--h264-cq 23 \
|
||
--av1-cq 30 \
|
||
-p 00:00:10
|
||
```
|
||
|
||
---
|
||
|
||
### 4. Игровой портал
|
||
|
||
**Требования:**
|
||
- Высокий FPS
|
||
- Геймплейные видео
|
||
- Плавность
|
||
|
||
```bash
|
||
avc gameplay.mp4 ./streams \
|
||
-r 720@60,1080@60,1440@120 \
|
||
-c dual \
|
||
-f dash
|
||
```
|
||
|
||
---
|
||
|
||
### 5. Мобильное приложение
|
||
|
||
**Требования:**
|
||
- Минимальный трафик
|
||
- Быстрая загрузка
|
||
- Малые разрешения
|
||
|
||
```bash
|
||
avc video.mp4 ./app/assets \
|
||
-r 360,480 \
|
||
-c av1 \
|
||
-f dash \
|
||
--av1-cq 42
|
||
```
|
||
|
||
---
|
||
|
||
### 6. Apple-only приложение
|
||
|
||
**Требования:**
|
||
- iOS/macOS приложение
|
||
- HLS формат
|
||
- Надежность
|
||
|
||
```bash
|
||
avc video.mp4 ./ios-app/videos \
|
||
-r 480,720,1080 \
|
||
-c h264 \
|
||
-f hls \
|
||
-p 00:00:03
|
||
```
|
||
|
||
---
|
||
|
||
## Пакетная обработка
|
||
|
||
### Bash script для множества файлов
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
|
||
# Конвертация всех MP4 файлов в папке
|
||
for video in *.mp4; do
|
||
echo "Converting: $video"
|
||
avc "$video" ./output \
|
||
-r 720,1080 \
|
||
-c dual \
|
||
-f both
|
||
done
|
||
|
||
echo "All videos converted!"
|
||
```
|
||
|
||
---
|
||
|
||
### С сохранением структуры папок
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
|
||
# Найти все MP4 и конвертировать
|
||
find ./source -name "*.mp4" -type f | while read video; do
|
||
# Получить путь относительно source
|
||
rel_path="${video#./source/}"
|
||
dir_name=$(dirname "$rel_path")
|
||
|
||
# Создать выходную директорию
|
||
mkdir -p "./output/$dir_name"
|
||
|
||
# Конвертировать
|
||
avc "$video" "./output/$dir_name" \
|
||
-r 720,1080 \
|
||
-c dual \
|
||
-f both
|
||
done
|
||
```
|
||
|
||
---
|
||
|
||
## Оптимизация производительности
|
||
|
||
### Быстрая конвертация (минимум профилей)
|
||
|
||
```bash
|
||
avc video.mp4 -r 720 -c h264 -f dash
|
||
```
|
||
|
||
**Время:** ~30% от полной конвертации
|
||
|
||
---
|
||
|
||
### Использование только GPU
|
||
|
||
```bash
|
||
# Убедитесь что NVENC доступен
|
||
avc video.mp4 -c dual # Автоматически использует NVENC
|
||
```
|
||
|
||
**Скорость:** В 5-10 раз быстрее CPU
|
||
|
||
---
|
||
|
||
## Проверка результата
|
||
|
||
После конвертации проверьте результат:
|
||
|
||
```bash
|
||
# Список созданных файлов
|
||
ls -lh video/
|
||
|
||
# Проверка DASH манифеста
|
||
cat video/manifest.mpd
|
||
|
||
# Проверка HLS манифеста
|
||
cat video/master.m3u8
|
||
|
||
# Размер всех файлов
|
||
du -sh video/
|
||
```
|
||
|
||
---
|
||
|
||
## Следующие шаги
|
||
|
||
- [Опции и ключи](/cli/options) — Полный справочник параметров
|
||
- [API Библиотеки](/api/) — Использование в коде
|