insert free atom after moov make vlc play
This commit is contained in:
parent
637f47b250
commit
b810c9a2fb
@ -7,7 +7,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if _, err := mp4.Open("tiny2-avconv.mp4"); err != nil {
|
if _, err := mp4.Open("mid.mp4"); err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
14
mp4.go
14
mp4.go
@ -59,14 +59,26 @@ func Open(filename string) (file *File, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if cc4 == "moov" {
|
if cc4 == "moov" {
|
||||||
|
curPos, _ := outfile.Seek(0, 1)
|
||||||
|
origSize := ar.N+8
|
||||||
var moov *atom.Movie
|
var moov *atom.Movie
|
||||||
if moov, err = atom.ReadMovie(ar); err != nil {
|
if moov, err = atom.ReadMovie(ar); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Println("regen moov", "tracks nr", len(moov.Tracks))
|
|
||||||
if err = atom.WriteMovie(outfile, moov); err != nil {
|
if err = atom.WriteMovie(outfile, moov); err != nil {
|
||||||
return
|
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 {
|
} else {
|
||||||
var aw *atom.Writer
|
var aw *atom.Writer
|
||||||
if aw, err = atom.WriteAtomHeader(outfile, cc4); err != nil {
|
if aw, err = atom.WriteAtomHeader(outfile, cc4); err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user