diff --git a/writer.go b/writer.go index 86b672d..89f8702 100644 --- a/writer.go +++ b/writer.go @@ -4,6 +4,7 @@ package mp4 import ( "github.com/nareix/mp4/atom" "io" + "fmt" ) type SimpleH264Writer struct { @@ -31,6 +32,25 @@ func (self *SimpleH264Writer) prepare() (err error) { return } + if len(self.SPS) == 0 { + err = fmt.Errorf("invalid SPS") + return + } + + if len(self.PPS) == 0 { + err = fmt.Errorf("invalid PPS") + return + } + + if self.Width == 0 || self.Height == 0 { + var info *atom.H264SPSInfo + if info, err = atom.ParseH264SPS(self.SPS[1:]); err != nil { + return + } + self.Width = int(info.Width) + self.Height = int(info.Height) + } + self.sampleIdx = 1 self.sample = &atom.SampleTable{ @@ -153,15 +173,6 @@ func (self *SimpleH264Writer) Finish() (err error) { return } - if self.Width == 0 || self.Height == 0 { - var info *atom.H264SPSInfo - if info, err = atom.ParseH264SPS(self.SPS); err != nil { - return - } - self.Width = int(info.Width) - self.Height = int(info.Height) - } - moov := &atom.Movie{} moov.Header = &atom.MovieHeader{ TimeScale: self.TimeScale,