syntax highlighting in the README
This commit is contained in:
parent
4a7ed9cf72
commit
1a3d00af18
103
README.md
103
README.md
@ -2,64 +2,71 @@
|
|||||||
codec
|
codec
|
||||||
====
|
====
|
||||||
|
|
||||||
Golang aac/h264 encoder and decoder
|
Golang aac/h264 encoder and decoder.
|
||||||
|
|
||||||
H264 encoding example
|
H264 encoding example:
|
||||||
|
|
||||||
w := 400
|
```go
|
||||||
h := 400
|
w := 400
|
||||||
var nal [][]byte
|
h := 400
|
||||||
|
var nal [][]byte
|
||||||
|
|
||||||
c, _ := codec.NewH264Encoder(w, h, image.YCbCrSubsampleRatio420)
|
c, _ := codec.NewH264Encoder(w, h, image.YCbCrSubsampleRatio420)
|
||||||
nal = append(nal, c.Header)
|
nal = append(nal, c.Header)
|
||||||
|
|
||||||
for i := 0; i < 60; i++ {
|
for i := 0; i < 60; i++ {
|
||||||
img := image.NewYCbCr(image.Rect(0,0,w,h), image.YCbCrSubsampleRatio420)
|
img := image.NewYCbCr(image.Rect(0,0,w,h), image.YCbCrSubsampleRatio420)
|
||||||
p, _ := c.Encode(img)
|
p, _ := c.Encode(img)
|
||||||
if len(p.Data) > 0 {
|
if len(p.Data) > 0 {
|
||||||
nal = append(nal, p.Data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for {
|
|
||||||
// flush encoder
|
|
||||||
p, err := c.Encode(nil)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
nal = append(nal, p.Data)
|
nal = append(nal, p.Data)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
H264 decoding example
|
for {
|
||||||
|
// flush encoder
|
||||||
dec, err := codec.NewH264Decoder(nal[0])
|
p, err := c.Encode(nil)
|
||||||
for i, n := range nal[1:] {
|
if err != nil {
|
||||||
img, err := dec.Decode(n)
|
break
|
||||||
if err == nil {
|
|
||||||
fp, _ := os.Create(fmt.Sprintf("/tmp/dec-%d.jpg", i))
|
|
||||||
jpeg.Encode(fp, img, nil)
|
|
||||||
fp.Close()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
nal = append(nal, p.Data)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
AAC encoding example
|
H264 decoding example:
|
||||||
|
|
||||||
var pkts [][]byte
|
|
||||||
|
|
||||||
c, _ := codec.NewAACEncoder()
|
```go
|
||||||
pkts = append(pkts, c.Header)
|
dec, err := codec.NewH264Decoder(nal[0])
|
||||||
|
for i, n := range nal[1:] {
|
||||||
for i := 0; i < 60; i++ {
|
img, err := dec.Decode(n)
|
||||||
var sample [8192]byte
|
if err == nil {
|
||||||
p, _ := c.Encode(sample)
|
fp, _ := os.Create(fmt.Sprintf("/tmp/dec-%d.jpg", i))
|
||||||
if len(p) > 0 {
|
jpeg.Encode(fp, img, nil)
|
||||||
pkts = append(pkts, p)
|
fp.Close()
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
AAC decoding example
|
AAC encoding example:
|
||||||
|
|
||||||
dec, _ := codec.NewAACDecoder(pkts[0])
|
```go
|
||||||
for _, p := range pkts[1:] {
|
var pkts [][]byte
|
||||||
sample, err := dec.Decode(p)
|
|
||||||
|
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