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/) — Использование в коде
|