Documentation
¶
Overview ¶
Package mp4decode provides for MP4 Video decoding
Index ¶
- Variables
- type Mp4dec
- func (v *Mp4dec) Close() error
- func (v *Mp4dec) CurrentCompositionTime() int64
- func (v *Mp4dec) CurrentFrameNumber() int64
- func (v *Mp4dec) CurrentTimeDelta() int64
- func (v *Mp4dec) Duration() int64
- func (v *Mp4dec) Initialize() error
- func (v *Mp4dec) Read() (*image.YCbCr, error)
- func (v *Mp4dec) ReadRaw() (*[3][]byte, error)
- func (v *Mp4dec) Seek(timestamp int64) error
- func (v *Mp4dec) SeekByTime(timestamp time.Duration) error
- func (v *Mp4dec) TimeDuration() time.Duration
- func (v *Mp4dec) Timescale() uint32
- func (v *Mp4dec) VideoSize() (width, height, samples int, err error)
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrEndOfStream = fmt.Errorf("end of stream")
Functions ¶
This section is empty.
Types ¶
type Mp4dec ¶
type Mp4dec struct {
Decoder *openh264.ISVCDecoder
DecParam *openh264.SDecodingParam
DstBufInfo *openh264.SBufferInfo
// contains filtered or unexported fields
}
func NewFromFile ¶
NewFromFile
mp4ファイルを読み込み。
Example ¶
package main
import (
"bytes"
"fmt"
"image/jpeg"
"log"
"time"
"github.com/y9o/go-openh264"
"github.com/y9o/mp4decode"
)
func main() {
if err := openh264.Open("openh264-2.4.1-win64.dll"); err != nil {
log.Fatal(err)
}
defer openh264.Close()
dec, err := mp4decode.NewFromFile("testdata/testsrc.mp4")
if err != nil {
log.Fatal(err)
}
if err := dec.Initialize(); err != nil {
log.Fatal(err)
}
if err := dec.SeekByTime(4 * time.Second); err != nil {
log.Fatal(err)
}
jpgdata := bytes.NewBuffer(make([]byte, 0, 12757))
for {
yuv, err := dec.Read()
if err != nil {
if err != mp4decode.ErrEndOfStream {
log.Fatal(err)
}
break
}
jpeg.Encode(jpgdata, yuv, &jpeg.Options{Quality: 95})
break
}
fmt.Println("len:", jpgdata.Len())
// os.WriteFile("4.jpg", jpgdata.Bytes(), 0600)
if err := dec.Close(); err != nil {
log.Fatal(err)
}
}
Output: len: 12757
func NewFromReadSeeker ¶
func NewFromReadSeeker(r io.ReadSeeker) (*Mp4dec, error)
NewFromReadSeeker
mp4を読み込み。
func (*Mp4dec) Read ¶
Read
ReadRawのデータをimage.YCbCrでラッピング。 colormatrixは無視 openh264内のメモリを参照するので内部で解放されるとアクセスできなくなる。
func (*Mp4dec) ReadRaw ¶
ReadRaw
frameデータを返します。Videoの終わりに到達するとErrEndOfStreamを返します。openh264内のメモリを参照するので内部で解放されるとアクセスできなくなる。
Click to show internal directories.
Click to hide internal directories.