Класс-обёртка для удобной работы с идентификаторами-хешами файлов видео-роликов, загруженных в медиа-хранилище.
Экземплярами класса StorageVideoFile
представлены runtime-значения полей heap-таблиц, объявленных через Heap.VideoFile и Heap.File (только для видео-файлов).
Также может быть использован для удобной работы с загруженными файлами изображений вне контекста хипа.
import { StorageVideoFile } from '@app/storage'
const file = new StorageVideoFile(hash)
Все свойства базового класса StorageFile (только type
всегда возвращает video
) + ...
videoSrc: Promise<{ mp4?, hls?, width?, height? }>
Возвращает объект с абсолютными URL и размерами видеопотока в формате, принимаемым свойством src
блока video.
getThumbnailUrl(width?: number, height?: number, offsetSeconds?: 'auto' | number): string
Возвращает абсолютный URL изображения кадра из видеопотока с учётом заданных размеров и смещения времени.
Если оба размера не заданы, то используется оригинальный размер видеопотока.
Если задан один из размеров, второй подбирается автоматически в соответствии с оригинальной пропорцией.
Если заданы оба размера, то миниатюра обрезается в соответствие с правилом "cover" - изображение обрезается с обоих сторон либо по вертикали либо по горизонтали в зависимости от пропорций.
width: number | undefined
ширина требуемой миниатюры в пикселях
height: number | undefined
высота требуемой миниатюры в пикселях
offsetSeconds: 'auto' | number | undefined
смещение кадра в секундах относительно начала ролика, поддерживает дробные значения
getThumbnailSrc(width?: number, height?: number, offsetSeconds?: 'auto' | number): { url, width?, height? }
Возвращает объект с абсолютным URL и размерами миниатюры изображения в формате, принимаемым свойством src
блока video с учётом заданных размеров.
Если оба размера не заданы, то используется оригинальный размер изображения.
Если задан один из размеров, второй подбирается автоматически в соответствии с оригинальной пропорцией.
Если заданы оба размера, то миниатюра обрезается в соответствие с правилом "cover" - изображение обрезается с обоих сторон либо по вертикали либо по горизонтали в зависимости от пропорций.
width: number | undefined
ширина требуемой миниатюры в пикселях
height: number | undefined
высота требуемой миниатюры в пикселях
offsetSeconds: 'auto' | number | undefined
смещение кадра в секундах относительно начала ролика, поддерживает дробные значения
width: number
"Строгая" ширина изображения в пикселях, определяется из свойства hash
. Если по какой-либо причине ширина не может быть определена, то при обращении будет брошено соответствующее исключение.
widthMaybe: number | undefined
"Нестрогая" ширина изображения в пикселях, определяется из свойства hash
. Возвращает undefined
, если по какой-либо причине ширина не может быть определена.
height: number
"Строгая" высота изображения в пикселях, определяется из свойства hash
. Если по какой-либо причине высота не может быть определена, то при обращении будет брошено соответствующее исключение.
heightMaybe: number | undefined
"Нестрогая" высота изображения в пикселях, определяется из свойства hash
. Возвращает undefined
, если по какой-либо причине высота не может быть определена.
sizes: { width: number, height: number }
"Строгие" размеры изображения в пикселях, определяются из свойства hash
. Если по какой-либо причине размеры не могут быть определены, то при обращении будет брошено соответствующее исключение.
sizesMaybe: { width: number, height: number } | undefined
"Нестрогие" размеры изображения в пикселях, определяются из свойства hash
. Возвращает undefined
, если по какой-либо причине размеры не могут быть определены.
duration: number
"Строгая" длина ролика в секундах, определяется из свойства hash
. Если по какой-либо причине длина не может быть определена, то при обращении будет брошено соответствующее исключение.
durationMaybe: number | undefined
"Нестрогая" длина ролика в секундах, определяется из свойства hash
. Возвращает undefined
, если по какой-либо причине длина не может быть определена.
status: Promise<'done' | 'processing' | 'error'>
\
Текущий статус обработки видео.
Видео-файлы становятся доступны для скачивания не сразу после загрузки, поскольку проходят специальных процесс кодирования в хранилище.
done
— файл готов, можно использовать.processing
— файл в процессе кодирования, текущий прогресс можно узнать из свойства progress
.error
— во время кодирования произошла ошибка, вероятно - несовместимый формат файла.progress: Promise<number>
Число от 0 до 100, обозначающее текущий процент завершения процесса кодирования при status=processing
.