76 lines
1.1 KiB
Go
76 lines
1.1 KiB
Go
|
|
package mp4
|
|
|
|
import (
|
|
"./atom"
|
|
"os"
|
|
"io"
|
|
"log"
|
|
)
|
|
|
|
type File struct {
|
|
}
|
|
|
|
func (self *File) AddAvcc(avcc *Avcc) {
|
|
}
|
|
|
|
func (self *File) AddMp4a(mp4a *Mp4a) {
|
|
}
|
|
|
|
func (self *File) GetAvcc() (avcc []*Avcc) {
|
|
return
|
|
}
|
|
|
|
func (self *File) GetMp4a() (mp4a []*Mp4a) {
|
|
return
|
|
}
|
|
|
|
func (self *File) Sync() {
|
|
}
|
|
|
|
func (self *File) Close() {
|
|
}
|
|
|
|
func Open(filename string) (file *File, err error) {
|
|
var osfile *os.File
|
|
if osfile, err = os.Open(filename); err != nil {
|
|
return
|
|
}
|
|
|
|
var finfo os.FileInfo
|
|
if finfo, err = osfile.Stat(); err != nil {
|
|
return
|
|
}
|
|
log.Println("filesize", finfo.Size())
|
|
|
|
lr := &io.LimitedReader{R: osfile, N: finfo.Size()}
|
|
|
|
for lr.N > 0 {
|
|
var r *io.LimitedReader
|
|
var cc4 string
|
|
if r, cc4, err = atom.ReadAtomHeader(lr, ""); err != nil {
|
|
return
|
|
}
|
|
if cc4 == "moov" {
|
|
var moov *atom.Movie
|
|
if moov, err = atom.ReadMovie(r); err != nil {
|
|
return
|
|
}
|
|
log.Println("tracks nr", len(moov.Tracks))
|
|
}
|
|
log.Println("atom", cc4, "left", lr.N)
|
|
atom.ReadDummy(r, int(r.N))
|
|
}
|
|
|
|
if _, err = os.Create(filename+".out.mp4"); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func Create(filename string) (file *File, err error) {
|
|
return
|
|
}
|
|
|