minfo

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 13, 2023 License: BSD-2-Clause Imports: 8 Imported by: 0

README

minfo

minimal mediainfo wrapper

usage - package

package main

import (
	"context"
	"fmt"

	"github.com/as/minfo"
)

func main() {
	c := context.Background()
	file, err := minfo.ReadURL(c, "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4")
	fmt.Println(err)
	fmt.Println(file)
}

usage - command line

go get github.com/as/minfo/cmd/minfo
minfo http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4
{"Path":"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4","StreamSize":"196724","Duration":"653.803","CodecID":"mp42","CodecID_Compatible":"isom/avc1/mp42","Format":"MPEG-4","Format_Profile":"Base Media","AudioCount":"1","FrameCount":"15691","VideoCount":"1","DataSize":"169415646","FileSize":"169612362","HeaderSize":"196716","OverallBitRate":"2075394","OverallBitRate_Mode":"VBR","IsStreamable":"Yes",
	"Track": [
		{"@type":"Video","ID":"2","StreamOrder":"1","StreamSize":"159156325","Duration":"653.792","FrameCount":"15691","FrameRate":"24","FrameRate_Mode":"CFR","CodecID":"avc1","Format":"AVC","Format_Profile":"High","Format_Level":"3.1","Format_Settings_RefFrames":"1","Format_Settings_CABAC":"Yes","BitRate":"1947487","Width":"1280","Height":"720","DisplayAspectRatio":"1.778","PixelAspectRatio":"1","BitDepth":"8","ScanType":"Progressive","ColorSpace":"YUV","ChromaSubsampling":"4:2:0","extra":{"Codec_configuration_box":"avcC"}},
		{"@type":"Audio","ID":"1","StreamSize":"10259313","Duration":"653.803","FrameCount":"28157","FrameRate":"43.066","CodecID":"mp4a-40-2","Format":"AAC","Format_AdditionalFeatures":"LC","BitRate":"125440","BitRate_Mode":"VBR","SamplingCount":"28832712","SamplingRate":"44100","SamplesPerFrame":"1024","Channels":"2","ChannelLayout":"L R","ChannelPositions":"Front: L R","Compression_Mode":"Lossy"}]}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Audio

type Audio struct {
	Header
	Frame
	Codec

	Samples         float64 `json:"SamplingCount,omitempty,string"`
	SampleRate      float64 `json:"SamplingRate,omitempty,string"`
	SamplesPerFrame float64 `json:"SamplesPerFrame,omitempty,string"`

	Channels  string `json:",omitempty"`
	Layout    string `json:"ChannelLayout,omitempty"`
	Positions string `json:"ChannelPositions,omitempty"`

	CompressionMode string `json:"Compression_Mode,omitempty"`
	AlternateGroup  string `json:"AlternateGroup,omitempty"`
	Default         string `json:",omitempty"`
}

type Box

type Box struct {
	Header
	Codec

	AudioCount,
	FrameCount,
	VideoCount,
	DataSize,
	FileSize,
	FooterSize,
	HeaderSize int `json:",string,omitempty"`

	EncodedApplication string `json:"Encoded_Application,omitempty"`

	OverallBitRate     float64 `json:",omitempty,string"`
	OverallBitRateMode string  `json:"OverallBitRate_Mode,omitempty"`
	IsStreamable       string  `json:"IsStreamable,omitempty"`
}

type Codec

type Codec struct {
	ID   string `json:"CodecID,omitempty"`
	Name string `json:"CodecID_Compatible,omitempty"`

	Format    string `json:"Format,omitempty"`
	Profile   string `json:"Format_Profile,omitempty"`
	Level     string `json:"Format_Level,omitempty"`
	RefFrames string `json:"Format_Settings_RefFrames,omitempty"`
	CABAC     string `json:"Format_Settings_CABAC,omitempty"`
	Features  string `json:"Format_AdditionalFeatures,omitempty"`

	BitRate,
	BitRateMaximum float64 `json:",string,omitempty"`
	BitRateMode string `json:"BitRate_Mode,omitempty"`
}

type File

type File struct {
	Path string `json:",omitempty"`

	Header
	Codec

	AudioCount,
	FrameCount,
	VideoCount,
	DataSize,
	FileSize,
	FooterSize,
	HeaderSize int `json:",string,omitempty"`

	EncodedApplication string `json:"Encoded_Application,omitempty"`

	OverallBitRate     float64 `json:",omitempty,string"`
	OverallBitRateMode string  `json:"OverallBitRate_Mode,omitempty"`
	IsStreamable       string  `json:"IsStreamable,omitempty"`

	Track []Track `json:",omitempty"`
}

func ReadURL

func ReadURL(c context.Context, path string) (media File, err error)

func (File) Audio

func (f File) Audio() (track []Audio)

func (*File) Decode

func (f *File) Decode(p []byte) error

func (File) Duration

func (f File) Duration() time.Duration

func (File) String

func (f File) String() string

func (File) Video

func (f File) Video() (track []Video)

type Frame

type Frame struct {
	Count            int     `json:"FrameCount,omitempty,string"`
	Rate             float64 `json:"FrameRate,omitempty,string"`
	RateMode         string  `json:"FrameRate_Mode,omitempty"`
	RateModeOriginal string  `json:"FrameRate_Mode_Original,omitempty"`
}
type Header struct {
	Type string `json:"@type,omitempty"`
	ID,
	StreamOrder,
	StreamSize int `json:",omitempty,string"`
	Duration float64 `json:",omitempty,string"`
}

func (Header) Info added in v0.0.4

func (h Header) Info() Header

type Text

type Text struct {
	Header
	Frame
	Codec

	Width, Height   int     `json:",omitempty,string"`
	CompressionMode string  `json:"Compression_Mode,omitempty"`
	Language        string  `json:",omitempty"`
	Delay           float64 `json:",omitempty,string"`
}

type Timecode

type Timecode struct {
	Header
	Frame
	Codec

	FirstFrame string  `json:"TimeCode_FirstFrame,omitempty"`
	Settings   string  `json:"TimeCode_Settings,omitempty"`
	Delay      float64 `json:",omitempty,string"`
}

type Track added in v0.0.4

type Track interface {
	Info() Header
}

type Video

type Video struct {
	Header
	Frame
	Codec

	Width, Height int `json:",omitempty,string"`

	DisplayAspectRatio,
	PixelAspectRatio,
	Rotation,
	BitDepth float64 `json:",omitempty,string"`

	ScanType,
	ColorSpace,
	ChromaSubsampling string `json:",omitempty"`

	Extra struct {
		CodecConfigurationBox string `json:"Codec_configuration_box,omitempty"`
	} `json:"extra,omitempty"`
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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