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.
lal/pkg/httpflv/flv_file_reader.go

48 lines
922 B
Go

// Copyright 2019, Chef. All rights reserved.
// https://github.com/q191201771/lal
//
// Use of this source code is governed by a MIT-style license
// that can be found in the License file.
//
// Author: Chef (191201771@qq.com)
package httpflv
import (
"os"
)
type FLVFileReader struct {
fp *os.File
hasReadFLVHeader bool
}
func (ffr *FLVFileReader) Open(filename string) (err error) {
ffr.fp, err = os.Open(filename)
return
}
func (ffr *FLVFileReader) ReadFLVHeader() ([]byte, error) {
ffr.hasReadFLVHeader = true
flvHeader := make([]byte, flvHeaderSize)
_, err := ffr.fp.Read(flvHeader)
return flvHeader, err
}
func (ffr *FLVFileReader) ReadTag() (Tag, error) {
// lazy read flv header
if !ffr.hasReadFLVHeader {
_, _ = ffr.ReadFLVHeader()
ffr.hasReadFLVHeader = true
}
return readTag(ffr.fp)
}
func (ffr *FLVFileReader) Dispose() {
if ffr.fp != nil {
_ = ffr.fp.Close()
}
}