Documentation ¶
Overview ¶
Получение метаинформации о видеопотоке/видеофайле, содержимое которого передается как объект Reader
Функции работы с ошибками сервиса
Index ¶
- Constants
- Variables
- func Analyze(ctx context.Context, kfsCore *core.KFS, hash string) error
- func AnalyzeFileType(kfsCore *core.KFS, hash string) (ft dao.FileType, err error)
- func AnalyzeIfNoFileType(ctx context.Context, kfsCore *core.KFS, hash string) error
- func GPS2Float(rational []exifcommon.Rational) float64
- func GetExifData(kfsCore *core.KFS, hash string) (e dao.Exif, err error)
- func GetJpegExifData(kfsCore *core.KFS, hash string) (e dao.Exif, err error)
- func GetVideoHeightWidthByFfmpeg(kfsCore *core.KFS, hash string) (width uint64, height uint64, err error)
- func GetVideoMetadata(kfsCore *core.KFS, hash string) (m dao.VideoMetadata, err error)
- func InsertExif(ctx context.Context, kfsCore *core.KFS, hash string, fileType *dao.FileType) error
- func NewFileType(fileType types.Type) dao.FileType
- func PluginUnzipIfLivp(ctx context.Context, kfsCore *core.KFS, hash string, name string) error
- func Process(kfsCore *core.KFS, conn AddrReadWriteCloser)
- func Socket(listener net.Listener, kfsCore *core.KFS) error
- func UnzipIfLivp(ctx context.Context, kfsCore *core.KFS, hash string) (movHash string, heicHash string, err error)
- func UnzipLivp(ctx context.Context, kfsCore *core.KFS, hash string) (movHash string, heicHash string, err error)
- type APIError
- type AddrReadWriteCloser
- type AudioStream
- type CommandHandler
- type Container
- type Stream
- type StreamReader
- type Track
- type VideoFile
- type VideoStream
Constants ¶
const ( Audio string = "Audio Media" // аудиопоток Video string = "Visual Media" // видеопоток Hint string = "Hint" // поток-наводка (подсказка) )
Константы типа потоков
Variables ¶
var ErrFileCodecNotSupported = NewAPIError("неподдерживаемый формат сжатия видеофайла", nil)
ErrFileCodecNotSupported ошибка - обрабатываемый файл имеет неподдерживаемый алгоритм сжатия медиаданных
var ErrFileIsNotValid = NewAPIError("формат файла неизвестен или не поддерживается", nil)
ErrFileIsNotValid ошибка - обрабатываемый файл не соответствует поддерживаемым форматам
var NO_VALUE_FOR_KEY = errors.New("no value for key")
Functions ¶
func AnalyzeFileType ¶
func AnalyzeIfNoFileType ¶
func GPS2Float ¶
func GPS2Float(rational []exifcommon.Rational) float64
func GetVideoMetadata ¶
func InsertExif ¶
func PluginUnzipIfLivp ¶
func Process ¶
func Process(kfsCore *core.KFS, conn AddrReadWriteCloser)
func UnzipIfLivp ¶
Types ¶
type APIError ¶
type APIError struct { APIMsg string // contains filtered or unexported fields }
APIError ошибка веб-сервиса
func NewAPIError ¶
NewAPIError создание новой ошибки
func (APIError) MarshalJSON ¶
MarshalJSON сериализация сведений об ошибке в формате JSON
type AddrReadWriteCloser ¶
type AddrReadWriteCloser interface { io.ReadWriteCloser RemoteAddr() net.Addr }
type AudioStream ¶
type AudioStream struct { *Stream AudioBalance string // баланс Format string // формат Channels string // количество каналов (моно, стерео, ...) SampleRate uint32 // частота дискретизации (Гц) }
AudioStream данные аудиопотока
type CommandHandler ¶
type CommandHandler func(kfsCore *core.KFS, conn AddrReadWriteCloser) error
type Container ¶
type Container struct { Created time.Time // время создания Modified time.Time // время изменения TimeScale uint32 // единица времени, используемая для квантования (обычно доли секунды) Duration float64 // продолжительность медиа-данных в контейнере (сек) PlayBackSpeed uint16 // скорость воспроизведения (смысл значения мне до сих пор непонятен) Volume string // уровень звука (относительный) Tracks []Track // медиа-дорожки, содержащиеся в контейнере // contains filtered or unexported fields }
Container Структура для хранения метаинформации о видеоконтейнере
type Stream ¶
type Stream struct { TimeScale uint32 // частота сэмплирования (для видео = количество кадров в секунду; для аудио = количество сэмплов в секунду) Duration float64 // продолжительность (сек) Type string // тип потока // contains filtered or unexported fields }
Stream общее описание потока, блок с именем 'minf', ============================================================ ПОТОКИ Visual Media = 'vide'; Audio Media = 'soun'; Hint = "hint'; Object Descriptor = 'odsm'; Clock Reference = 'crsm'; Scene Description = 'sdsm'; MPEG-7 Stream = 'm7sm'; Object Content Info = 'ocsm'; IPMP = 'ipsm'; MPEG-J = 'mjsm';
type StreamReader ¶
type StreamReader interface {
// contains filtered or unexported methods
}
StreamReader интерфейс медиапотока данных (их может быть аж до 10 типов, в нашем случае - только два)
type Track ¶
type Track struct { Created time.Time // время создания Modified time.Time // время изменения Duration float64 // продолжительность медиа-дорожки (сек) Height uint32 // высота для дорожки видеопотока (пиксель) Width uint32 // ширина для дорожки видеопотока (пиксель) Stream StreamReader // медиапоток данных, с которым связана данная дорожка (одна дорожка - один поток) // contains filtered or unexported fields }
Track Структура для хранения метаинформации о медиа-дорожке
type VideoFile ¶
type VideoFile struct { Size int // размер файла (байт) Codec string // стандарт используемого сжатия видео и аудио потоков Movie Container // видеоконтейнер // contains filtered or unexported fields }
VideoFile Структура для хранения метаинформации о видеофайле Файл MP4 представляет собой древовидную структуру, узлы которой описывают определенную часть информации о файле, одни - в более общей форме (узлы дерева), другие - непосредственно - так называемые листья дерева видеофайла Термин "Блок" здесь используется как логический узел этого дерева и может рассматриваться как участок содержимого файла со специальным описанием (размером блока и индентификатором (именем)) и его содержимым, содержимое блока - это данные, несущие определенную информацию о видеофайле. Описание блока здесь именуется как заголовок блока Этот заголовок в большинстве случаев имеет размер 8 байт и всегда располагается в начале блока. Некоторые блоки могут иметь размер более 8 байт Размер блока включает в себя размер заголовка
func (*VideoFile) CheckFile ¶
CheckFile проверка на соответствие формата переданного содержимого стандартам MP4
func (*VideoFile) Open ¶
Open Метод проверки доступности и корректности файла, создание буфера и.т.д