mirror of https://github.com/q191201771/lal.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"github.com/q191201771/lal/pkg/aac"
|
|
"github.com/q191201771/lal/pkg/avc"
|
|
"github.com/q191201771/lal/pkg/httpflv"
|
|
"github.com/q191201771/lal/pkg/util/errors"
|
|
"github.com/q191201771/lal/pkg/util/log"
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
var err error
|
|
flvFileName, aacFileName, avcFileName := parseFlag()
|
|
|
|
var ffr httpflv.FlvFileReader
|
|
err = ffr.Open(flvFileName)
|
|
errors.PanicIfErrorOccur(err)
|
|
defer ffr.Dispose()
|
|
log.Infof("open flv file succ.")
|
|
|
|
afp, err := os.Open(aacFileName)
|
|
errors.PanicIfErrorOccur(err)
|
|
defer afp.Close()
|
|
log.Infof("open es aac file succ.")
|
|
|
|
vfp, err := os.Open(avcFileName)
|
|
errors.PanicIfErrorOccur(err)
|
|
defer vfp.Close()
|
|
log.Infof("open es h264 file succ.")
|
|
|
|
_, err = ffr.ReadFlvHeader()
|
|
errors.PanicIfErrorOccur(err)
|
|
|
|
for {
|
|
tag, err := ffr.ReadTag()
|
|
if err == io.EOF {
|
|
log.Infof("EOF.")
|
|
break
|
|
}
|
|
errors.PanicIfErrorOccur(err)
|
|
|
|
payload := tag.Payload()
|
|
|
|
switch tag.Header.T {
|
|
case httpflv.TagTypeAudio:
|
|
aac.CaptureAAC(afp, payload)
|
|
case httpflv.TagTypeVideo:
|
|
avc.CaptureAVC(vfp, payload)
|
|
}
|
|
}
|
|
}
|
|
|
|
func parseFlag() (string, string, string) {
|
|
flv := flag.String("i", "", "specify flv file")
|
|
aac := flag.String("a", "", "specify es aac file")
|
|
avc := flag.String("v", "", "specify es h264 file")
|
|
flag.Parse()
|
|
if *flv == "" || *avc == "" || *aac == "" {
|
|
flag.Usage()
|
|
os.Exit(1)
|
|
}
|
|
return *flv, *aac, *avc
|
|
}
|