Транскодирование
Транскодирование
Al(co)pac может транскодировать видео-потоки через FFmpeg для совместимости с устройствами, не поддерживающими исходный формат.
Требования
- FFmpeg установлен на сервере (ставится автоматически при curl-установке)
- Достаточно CPU и RAM для real-time транскодирования
Конфигурация
{
"Transcoding": {
"Enable": true,
"FFmpeg": "/usr/bin/ffmpeg",
"TempRoot": "/tmp/lampac-transcode",
"IdleTimeoutSec": 300,
"MaxConcurrent": 2,
"HLS": {
"SegmentDuration": 6,
"ListSize": 10
},
"Audio": {
"Codec": "aac",
"Bitrate": "128k"
},
"Subtitle": {
"Extract": true
}
}
}Параметры
| Поле | Описание | По умолчанию |
|---|---|---|
Enable |
Включить транскодирование | false |
FFmpeg |
Путь к бинарнику FFmpeg | /usr/bin/ffmpeg |
TempRoot |
Директория для временных сегментов | /tmp |
IdleTimeoutSec |
Таймаут простоя потока (сек) | 300 |
MaxConcurrent |
Максимум одновременных потоков | 2 |
HLS-параметры
| Поле | Описание | По умолчанию |
|---|---|---|
SegmentDuration |
Длительность HLS-сегмента (сек) | 6 |
ListSize |
Количество сегментов в playlist | 10 |
Аудио
| Поле | Описание | По умолчанию |
|---|---|---|
Codec |
Аудио-кодек | aac |
Bitrate |
Битрейт аудио | 128k |
Субтитры
| Поле | Описание | По умолчанию |
|---|---|---|
Extract |
Извлекать субтитры из потока | true |
Как работает
- Клиент запрашивает видео в неподдерживаемом формате
- Al(co)pac запускает FFmpeg для транскодирования в HLS
- HLS-сегменты отдаются клиенту в реальном времени
- После
IdleTimeoutSecпростоя процесс завершается и временные файлы удаляются
Транскодирование нагружает CPU. Рекомендуется ограничивать
MaxConcurrent в зависимости от мощности сервера.Поддержка HEVC (H.265)
Транскодирование автоматически определяет кодек видео (H.264 или HEVC) и применяет правильный bitstream filter:
- H.264 →
h264_mp4toannexb - HEVC (H.265) →
hevc_mp4toannexb
Определение происходит через ffprobe при старте потока. Если кодек не удаётся определить, используется H.264 по умолчанию.
Если ранее при транскодировании HEVC-видео (4K контент Mirage и др.) возникала ошибка 502 с сообщением
Codec 'hevc' is not supported by the bitstream filter 'h264_mp4toannexb' — обновите сервер, проблема исправлена.Включение
Через вкладку Плагины в админ-панели или в init.conf.