server

package module
v0.0.0-...-094e1e4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2024 License: MIT Imports: 35 Imported by: 5

Documentation

Overview

Получение метаинформации о видеопотоке/видеофайле, содержимое которого передается как объект Reader

Функции работы с ошибками сервиса

Index

Constants

View Source
const (
	Audio string = "Audio Media"  // аудиопоток
	Video string = "Visual Media" // видеопоток
	Hint  string = "Hint"         // поток-наводка (подсказка)
)

Константы типа потоков

Variables

View Source
var ErrFileCodecNotSupported = NewAPIError("неподдерживаемый формат сжатия видеофайла", nil)

ErrFileCodecNotSupported ошибка - обрабатываемый файл имеет неподдерживаемый алгоритм сжатия медиаданных

View Source
var ErrFileIsNotValid = NewAPIError("формат файла неизвестен или не поддерживается", nil)

ErrFileIsNotValid ошибка - обрабатываемый файл не соответствует поддерживаемым форматам

View Source
var NO_VALUE_FOR_KEY = errors.New("no value for key")

Functions

func Analyze

func Analyze(ctx context.Context, kfsCore *core.KFS, hash string) error

func AnalyzeFileType

func AnalyzeFileType(kfsCore *core.KFS, hash string) (ft dao.FileType, err error)

func AnalyzeIfNoFileType

func AnalyzeIfNoFileType(ctx context.Context, kfsCore *core.KFS, hash string) error

func GPS2Float

func GPS2Float(rational []exifcommon.Rational) float64

func GetExifData

func GetExifData(kfsCore *core.KFS, hash string) (e dao.Exif, err error)

func GetJpegExifData

func GetJpegExifData(kfsCore *core.KFS, hash string) (e dao.Exif, err error)

func GetVideoHeightWidthByFfmpeg

func GetVideoHeightWidthByFfmpeg(kfsCore *core.KFS, hash string) (width uint64, height uint64, err error)

func GetVideoMetadata

func GetVideoMetadata(kfsCore *core.KFS, hash string) (m dao.VideoMetadata, err error)

func InsertExif

func InsertExif(ctx context.Context, kfsCore *core.KFS, hash string, fileType *dao.FileType) error

func NewFileType

func NewFileType(fileType types.Type) dao.FileType

func PluginUnzipIfLivp

func PluginUnzipIfLivp(ctx context.Context, kfsCore *core.KFS, hash string, name string) error

func Process

func Process(kfsCore *core.KFS, conn AddrReadWriteCloser)

func Socket

func Socket(listener net.Listener, kfsCore *core.KFS) error

func UnzipIfLivp

func UnzipIfLivp(ctx context.Context, kfsCore *core.KFS, hash string) (movHash string, heicHash string, err error)

func UnzipLivp

func UnzipLivp(ctx context.Context, kfsCore *core.KFS, hash string) (movHash string, heicHash string, err error)

Types

type APIError

type APIError struct {
	APIMsg string
	// contains filtered or unexported fields
}

APIError ошибка веб-сервиса

func NewAPIError

func NewAPIError(msg string, err error) (e APIError)

NewAPIError создание новой ошибки

func (APIError) Error

func (e APIError) Error() string

Error текст ошибки

func (APIError) MarshalJSON

func (e APIError) MarshalJSON() (b []byte, err error)

MarshalJSON сериализация сведений об ошибке в формате JSON

func (APIError) UnWrap

func (e APIError) UnWrap() error

UnWrap извлечение ошибки

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

func (f *VideoFile) CheckFile(buf *bufio.Reader) (err error)

CheckFile проверка на соответствие формата переданного содержимого стандартам MP4

func (*VideoFile) Open

func (f *VideoFile) Open(r io.Reader) (err error)

Open Метод проверки доступности и корректности файла, создание буфера и.т.д

func (*VideoFile) Parse

func (f *VideoFile) Parse() (err error)

Parse Метод разбора видеофайла на метаданные

func (VideoFile) ToJSON

func (f VideoFile) ToJSON() (b []byte, err error)

ToJSON сериализация метаданных в формат JSON

type VideoStream

type VideoStream struct {
	*Stream
	Format     string // формат
	ResY       uint16 // разрешение по вертикали (точек на дюйм)
	ResX       uint16 // разрешение по горизонтали (точек на дюйм)
	ColorDepth uint16 // глубина цвета (бит)
}

VideoStream данные видеопотока

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL