ReadHeader() -> Streams()
This commit is contained in:
parent
fd62ece67d
commit
4a10a9ef1b
15
demuxer.go
15
demuxer.go
@ -20,8 +20,7 @@ type Demuxer struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
|
func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
|
||||||
if len(self.streams) == 0 {
|
if err = self.probe(); err != nil {
|
||||||
err = fmt.Errorf("mp4: no streams")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, stream := range self.streams {
|
for _, stream := range self.streams {
|
||||||
@ -30,7 +29,11 @@ func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Demuxer) ReadHeader() (err error) {
|
func (self *Demuxer) probe() (err error) {
|
||||||
|
if self.movieAtom != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var N int64
|
var N int64
|
||||||
var moov *atom.Movie
|
var moov *atom.Movie
|
||||||
|
|
||||||
@ -65,7 +68,6 @@ func (self *Demuxer) ReadHeader() (err error) {
|
|||||||
err = fmt.Errorf("'moov' atom not found")
|
err = fmt.Errorf("'moov' atom not found")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.movieAtom = moov
|
|
||||||
|
|
||||||
self.streams = []*Stream{}
|
self.streams = []*Stream{}
|
||||||
for i, atrack := range moov.Tracks {
|
for i, atrack := range moov.Tracks {
|
||||||
@ -101,6 +103,7 @@ func (self *Demuxer) ReadHeader() (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.movieAtom = moov
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,6 +303,10 @@ func (self *Stream) sampleCount() int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Demuxer) ReadPacket() (pkt av.Packet, err error) {
|
func (self *Demuxer) ReadPacket() (pkt av.Packet, err error) {
|
||||||
|
if err = self.probe(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var chosen *Stream
|
var chosen *Stream
|
||||||
var chosenidx int
|
var chosenidx int
|
||||||
for i, stream := range self.streams {
|
for i, stream := range self.streams {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user