commit
4cbd6a41f0
101
README.md
101
README.md
@ -2,64 +2,71 @@
|
||||
codec
|
||||
====
|
||||
|
||||
Golang aac/h264 encoder and decoder
|
||||
Golang aac/h264 encoder and decoder.
|
||||
|
||||
H264 encoding example
|
||||
H264 encoding example:
|
||||
|
||||
w := 400
|
||||
h := 400
|
||||
var nal [][]byte
|
||||
```go
|
||||
w := 400
|
||||
h := 400
|
||||
var nal [][]byte
|
||||
|
||||
c, _ := codec.NewH264Encoder(w, h, image.YCbCrSubsampleRatio420)
|
||||
nal = append(nal, c.Header)
|
||||
c, _ := codec.NewH264Encoder(w, h, image.YCbCrSubsampleRatio420)
|
||||
nal = append(nal, c.Header)
|
||||
|
||||
for i := 0; i < 60; i++ {
|
||||
img := image.NewYCbCr(image.Rect(0,0,w,h), image.YCbCrSubsampleRatio420)
|
||||
p, _ := c.Encode(img)
|
||||
if len(p.Data) > 0 {
|
||||
nal = append(nal, p.Data)
|
||||
}
|
||||
}
|
||||
for {
|
||||
// flush encoder
|
||||
p, err := c.Encode(nil)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
for i := 0; i < 60; i++ {
|
||||
img := image.NewYCbCr(image.Rect(0,0,w,h), image.YCbCrSubsampleRatio420)
|
||||
p, _ := c.Encode(img)
|
||||
if len(p.Data) > 0 {
|
||||
nal = append(nal, p.Data)
|
||||
}
|
||||
|
||||
H264 decoding example
|
||||
|
||||
dec, err := codec.NewH264Decoder(nal[0])
|
||||
for i, n := range nal[1:] {
|
||||
img, err := dec.Decode(n)
|
||||
if err == nil {
|
||||
fp, _ := os.Create(fmt.Sprintf("/tmp/dec-%d.jpg", i))
|
||||
jpeg.Encode(fp, img, nil)
|
||||
fp.Close()
|
||||
}
|
||||
}
|
||||
for {
|
||||
// flush encoder
|
||||
p, err := c.Encode(nil)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
nal = append(nal, p.Data)
|
||||
}
|
||||
```
|
||||
|
||||
AAC encoding example
|
||||
H264 decoding example:
|
||||
|
||||
var pkts [][]byte
|
||||
|
||||
c, _ := codec.NewAACEncoder()
|
||||
pkts = append(pkts, c.Header)
|
||||
|
||||
for i := 0; i < 60; i++ {
|
||||
var sample [8192]byte
|
||||
p, _ := c.Encode(sample)
|
||||
if len(p) > 0 {
|
||||
pkts = append(pkts, p)
|
||||
}
|
||||
```go
|
||||
dec, err := codec.NewH264Decoder(nal[0])
|
||||
for i, n := range nal[1:] {
|
||||
img, err := dec.Decode(n)
|
||||
if err == nil {
|
||||
fp, _ := os.Create(fmt.Sprintf("/tmp/dec-%d.jpg", i))
|
||||
jpeg.Encode(fp, img, nil)
|
||||
fp.Close()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
AAC decoding example
|
||||
AAC encoding example:
|
||||
|
||||
dec, _ := codec.NewAACDecoder(pkts[0])
|
||||
for _, p := range pkts[1:] {
|
||||
sample, err := dec.Decode(p)
|
||||
```go
|
||||
var pkts [][]byte
|
||||
|
||||
c, _ := codec.NewAACEncoder()
|
||||
pkts = append(pkts, c.Header)
|
||||
|
||||
for i := 0; i < 60; i++ {
|
||||
var sample [8192]byte
|
||||
p, _ := c.Encode(sample)
|
||||
if len(p) > 0 {
|
||||
pkts = append(pkts, p)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
AAC decoding example:
|
||||
|
||||
```go
|
||||
dec, _ := codec.NewAACDecoder(pkts[0])
|
||||
for _, p := range pkts[1:] {
|
||||
sample, err := dec.Decode(p)
|
||||
}
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user