diff --git a/example/read.go b/example/read.go index 56d07c1..f6e0a14 100644 --- a/example/read.go +++ b/example/read.go @@ -7,7 +7,7 @@ import ( ) func main() { - if _, err := mp4.Open("tiny2-avconv.mp4"); err != nil { + if _, err := mp4.Open("mid.mp4"); err != nil { log.Println(err) return } diff --git a/mp4.go b/mp4.go index b26cf05..b3f1254 100644 --- a/mp4.go +++ b/mp4.go @@ -59,14 +59,26 @@ func Open(filename string) (file *File, err error) { } if cc4 == "moov" { + curPos, _ := outfile.Seek(0, 1) + origSize := ar.N+8 var moov *atom.Movie if moov, err = atom.ReadMovie(ar); err != nil { return } - log.Println("regen moov", "tracks nr", len(moov.Tracks)) if err = atom.WriteMovie(outfile, moov); err != nil { return } + curPosAfterRead, _ := outfile.Seek(0, 1) + bytesWritten := curPosAfterRead - curPos + + log.Println("regen moov", "tracks nr", len(moov.Tracks), + "origSize", origSize, "bytesWritten", bytesWritten, + ) + + padSize := origSize - bytesWritten - 8 + aw, _ := atom.WriteAtomHeader(outfile, "free") + atom.WriteDummy(outfile, int(padSize)) + aw.Close() } else { var aw *atom.Writer if aw, err = atom.WriteAtomHeader(outfile, cc4); err != nil {