mjpeg

package module
v0.0.0-...-b737f15 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

README

About this fork

I made this fork to remove dependences from os.File and use a in-memory buffer instead. I don't always want to write to a file.

package main
import "github.com/NiuWeb/mjpeg"

func main() {
    writer := mjpeg.New(640, 480, 24)
    buf := bytes.NewBuffer([]byte{})
    var img image.Image
    jpeg.Encode(buf, img, nil)
    writer.AddFrame(buf.Bytes())
    
    data := writer.ReadBytes()
}

mjpeg

Build Status GoDoc Go Report Card

MJPEG video writer implementation in Go.

Examples

Let's see an example how to turn the JPEG files 1.jpg, 2.jpg, ..., 10.jpg into a movie file:

checkErr := func(err error) {
    if err != nil {
        panic(err)
    }
}

// Video size: 200x100 pixels, FPS: 2
aw, err := mjpeg.New("test.avi", 200, 100, 2)
checkErr(err)

// Create a movie from images: 1.jpg, 2.jpg, ..., 10.jpg
for i := 1; i <= 10; i++ {
    data, err := ioutil.ReadFile(fmt.Sprintf("%d.jpg", i))
    checkErr(err)
    checkErr(aw.AddFrame(data))
}

checkErr(aw.Close())

Example to add an image.Image as a frame to the video:

aw, err := mjpeg.New("test.avi", 200, 100, 2)
checkErr(err)

var img image.Image
// Acquire / initialize image, e.g.:
// img = image.NewRGBA(image.Rect(0, 0, 200, 100))

buf := &bytes.Buffer{}
checkErr(jpeg.Encode(buf, img, nil))
checkErr(aw.AddFrame(buf.Bytes()))

checkErr(aw.Close())

Documentation

Overview

Original code at: https://github.com/icza/mjpeg

Package mjpeg contains an MJPEG video format writer.

Examples

Let's see an example how to turn the JPEG files 1.jpg, 2.jpg, ..., 10.jpg into a movie file:

checkErr := func(err error) {
    if err != nil {
        panic(err)
    }
}

// Video size: 200x100 pixels, FPS: 2
aw, err := mjpeg.New("test.avi", 200, 100, 2)
checkErr(err)

// Create a movie from images: 1.jpg, 2.jpg, ..., 10.jpg
for i := 1; i <= 10; i++ {
    data, err := ioutil.ReadFile(fmt.Sprintf("%d.jpg", i))
    checkErr(err)
    checkErr(aw.AddFrame(data))
}

checkErr(aw.Close())

Example to add an image.Image as a frame to the video:

aw, err := mjpeg.New("test.avi", 200, 100, 2)
checkErr(err)

var img image.Image
// Acquire / initialize image, e.g.:
// img = image.NewRGBA(image.Rect(0, 0, 200, 100))

buf := &bytes.Buffer{}
checkErr(jpeg.Encode(buf, img, nil))
checkErr(aw.AddFrame(buf.Bytes()))

checkErr(aw.Close())

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrTooLarge reports if more frames cannot be added,
	// else the video file would get corrupted.
	ErrTooLarge = errors.New("video file too large")
)

Functions

This section is empty.

Types

type AviWriter

type AviWriter interface {
	// AddFrame adds a frame from a JPEG encoded data slice.
	AddFrame(jpegData []byte) error

	// Close finalizes and closes the avi file.
	Close() error

	// reads all bytes from the avi file
	ReadBytes() ([]byte, error)
}

AviWriter is an *.avi video writer. The video codec is MJPEG.

func New

func New(width, height, fps int32) AviWriter

creates a new AviWriter with in-memory files

func NewWriter

func NewWriter(avif io.ReadWriteSeeker, idxf io.ReadWriteSeeker, width, height, fps int32) AviWriter

New returns a new AviWriter. The Close() method of the AviWriter must be called to finalize the video file.

Directories

Path Synopsis
This example encodes all jpeg images (*.jpg) into an MJPEG movie file (flying-gopher.avi).
This example encodes all jpeg images (*.jpg) into an MJPEG movie file (flying-gopher.avi).

Jump to

Keyboard shortcuts

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