mpeg

An experimental pure-golang MPEG-2 decoder implementation

  • Owner: 32bitkid/mpeg
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

mpeg

Package mpeg provides an implementation of an experimental
pure golang implementation of an MPEG-2 decoder. It
is intended as an educational look at some of the patterns and
algorithms involved in the ubiquitous technology of video
compression/decompression.

This package is experimental and is not intended for
use in production environments.

GoDoc

Composition

This library is split into four sub-packages:

  • mpeg/ts for parsing and processing MPEG-2 Transport Streams
  • mpeg/ps for parsing and processing MPEG-2 Program Streams
  • mpeg/pes for parsing and processing MPEG-2 Packetized Elementary Streams
  • mpeg/video for decoding MPEG-2 Video

Examples

Give it a spin!

go get -d github.com/32bitkid/mpeg

Decode a frame of video from a MPEG-2 TS and save it as a png

package main

import "os"
import "image/png"

import "github.com/32bitkid/mpeg/ts"
import "github.com/32bitkid/mpeg/pes"
import "github.com/32bitkid/mpeg/video"

func main() {
  // Open the file
  tsReader, err := os.Open("source.ts")

  // Decode PID 0x21 from the TS stream
  pesReader := ts.NewPayloadUnitReader(tsReader, ts.IsPID(0x21))

  // Decode the PES stream
  esReader := pes.NewPayloadReader(pesReader)

  // Decode the ES into a stream of frames
  v := video.NewVideoSequence(esReader)

  // Align to next sequence start/entry point
  v.AlignTo(video.SequenceHeaderStartCode)

  // get the next frame
  frame, _ = v.Next()
  file, _ := os.Create("output.png")
  png.Encode(file, frame)
}

Main metrics

Overview
Name With Owner32bitkid/mpeg
Primary LanguageGo
Program languageGo (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2014-07-14 01:33:48
Pushed At2024-06-08 02:37:51
Last Commit At2024-06-07 20:37:50
Release Count0
用户参与
Stargazers Count92
Watchers Count7
Fork Count15
Commits Count329
Has Issues Enabled
Issues Count1
Issue Open Count1
Pull Requests Count1
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private