From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Fri, 3 Feb 2023 03:22:19 +0000 (+0800) Subject: Fix misspell X-Git-Tag: v0.6.1~5 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=0a03d68ed20e82e6b8f65424ae17ae76fad567a6;p=bili_danmu%2F.git Fix misspell --- diff --git a/Reply/flvDecode.go b/Reply/flvDecode.go index 29feb2e..d2435fa 100644 --- a/Reply/flvDecode.go +++ b/Reply/flvDecode.go @@ -17,409 +17,15 @@ const ( video_tag = byte(0x09) audio_tag = byte(0x08) script_tag = byte(0x12) - - //custom define - // eof_tag = byte(0x00) ) var ( flv_header_sign = []byte{0x46, 0x4c, 0x56} - // flvlog = c.C.Log.Base(`flv解码`) - // send_sign = []byte{0x00} ) -// type flv_source struct { -// buf []byte -// Rval reqf.Rval -// Inuse bool -// } - -// func Stream_sync(sources []*flv_source) (buf_p *[]byte,err error) { -// var ( -// sources sync.Map -// buf = []byte{} -// ) -// buf_p = &buf - -// for i:=0;i 2 { -// // last_timestamps = append(last_timestamps[1:], t.Timestamp) -// last_keyframe_video_offsets = append(last_keyframe_video_offsets[1:], t.Offset) -// } else { -// // last_timestamps = append(last_timestamps, t.Timestamp) -// last_keyframe_video_offsets = append(last_keyframe_video_offsets, t.Offset) -// } -// } -// } else if t.Tag == audio_tag { -// if !first_audio_tag { -// first_audio_tag = true -// *front_buf = append(*front_buf, *t.Buf...) -// } -// } else { //eof_tag -// break -// } -// } - -// //seed to the second last tag -// if len(last_keyframe_video_offsets) == 0 { -// flvlog.L(`W: `, `no keyframe`) -// return errors.New(`no keyframe`) -// } -// f.Seek(last_keyframe_video_offsets[0], 0) - -// // var ( -// // last_video_keyframe_timestramp int32 -// // video_keyframe_speed int32 -// // ) -// //copy when key frame -// { -// last_available_offset := last_keyframe_video_offsets[0] -// var buf []byte -// // last_Timestamp := last_timestamps[0] -// for { -// //退出 -// select { -// case <-cancel: -// return nil -// default: -// } -// t := getTag(f) -// if t.Tag == eof_tag { -// f.Seek(last_available_offset, 0) -// time.Sleep(time.Second) -// continue -// } else if t.PreSize == 0 { -// f.Seek(seachtag(f, last_available_offset), 0) -// continue -// } else if t.Tag == video_tag { -// if t.FirstByte&0xf0 == 0x10 { -// streamChan <- buf -// buf = []byte{} -// } -// buf = append(buf, *t.Buf...) -// } else if t.Tag == audio_tag { -// buf = append(buf, *t.Buf...) -// } - -// last_available_offset = t.Offset - -// } -// } - -// return nil -// } - -// func TimeStramp_Check(path string) error { -// //file -// f, err := os.OpenFile(path, os.O_RDONLY, 0644) -// if err != nil { -// return err -// } -// defer f.Close() - -// //get flv header(9byte) + FirstTagSize(4byte) -// { -// buf := make([]byte, flv_header_size+previou_tag_size) -// if _, err := f.Read(buf); err != nil { -// return err -// } -// if bytes.Index(buf, flv_header_sign) != 0 { -// return errors.New(`no flv`) -// } -// } - -// type flv_tag struct { -// Tag byte -// Offset int64 -// Timestamp int32 -// PreSize int32 -// FirstByte byte -// } - -// //get tag func -// var getTag = func(f *os.File) (t flv_tag) { -// t.Offset, _ = f.Seek(0, 1) - -// buf := make([]byte, tag_header_size) -// if size, err := f.Read(buf); err != nil || size == 0 { -// t.Tag = eof_tag -// return -// } -// t.Tag = buf[0] -// t.Timestamp = F.Btoi32([]byte{buf[7], buf[4], buf[5], buf[6]}, 0) - -// size := F.Btoi32(append([]byte{0x00}, buf[1:4]...), 0) - -// data := make([]byte, size) -// if size, err := f.Read(data); err != nil || size == 0 { -// t.Tag = eof_tag -// return -// } -// t.FirstByte = data[0] - -// pre_tag := make([]byte, previou_tag_size) -// if size, err := f.Read(pre_tag); err != nil || size == 0 { -// t.Tag = eof_tag -// return -// } -// t.PreSize = F.Btoi32(pre_tag, 0) - -// // if t.PreSize == 0{fmt.Println(t.Tag,size,data[size:])} - -// return -// } - -// //get first video and audio tag -// //find last_keyframe_video_offset -// var ( -// lasttimestramp int32 -// // last_timestamps []int32 -// ) -// for { -// t := getTag(f) -// if t.Tag == script_tag && t.Timestamp == 0 { -// continue -// } else if t.Tag == video_tag || t.Tag == audio_tag { -// if t.Timestamp < lasttimestramp { -// fmt.Printf("error: now %d < pre %d\n", t.Timestamp, lasttimestramp) -// lasttimestramp = t.Timestamp -// continue -// } -// fmt.Printf("%d\n", t.Timestamp) -// lasttimestramp = t.Timestamp -// if lasttimestramp > 10000 { -// return nil -// } -// } else { //eof_tag -// break -// } -// } -// fmt.Printf("ok\n") -// return nil -// } - // this fuction read []byte and return flv header and all complete keyframe if possible. // complete keyframe means the video and audio tags between two video key frames tag -func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avilable_offset int, err error) { +func Search_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_available_offset int, err error) { //get flv header(9byte) + FirstTagSize(4byte) if header_offset := bytes.Index(buf, flv_header_sign); header_offset != -1 { if header_offset+flv_header_size+previou_tag_size > len(buf) { @@ -427,7 +33,7 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi return } front_buf = buf[header_offset : header_offset+flv_header_size+previou_tag_size] - last_avilable_offset = header_offset + flv_header_size + previou_tag_size + last_available_offset = header_offset + flv_header_size + previou_tag_size } var ( @@ -465,7 +71,7 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi streamid := int(F.Btoi32([]byte{0x00, buf[tag_offset+8], buf[tag_offset+9], buf[tag_offset+10]}, 0)) if streamid != 0 { buf_offset = tag_offset + 1 - last_avilable_offset = buf_offset + last_available_offset = buf_offset // fmt.Printf("streamid error %x\n",buf[tag_offset:tag_offset+tag_header_size]) continue //streamid error } @@ -478,7 +84,7 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi } if tag_size == 0 { buf_offset = tag_offset + 1 - last_avilable_offset = buf_offset + last_available_offset = buf_offset // fmt.Printf("tag_size error %x\n",buf[tag_offset:tag_offset+tag_header_size]) continue //tag_size error } @@ -489,7 +95,7 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi } if tag_size_check != tag_size+tag_header_size { buf_offset = tag_offset + 1 - last_avilable_offset = buf_offset + last_available_offset = buf_offset // fmt.Printf("tag_size_check error %x\n",buf[tag_offset:tag_offset+tag_header_size]) continue //tag_size_check error } @@ -516,7 +122,7 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi } } buf_offset = tag_offset + tag_size_check + previou_tag_size - last_avilable_offset = buf_offset + last_available_offset = buf_offset continue } @@ -524,7 +130,7 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi if buf[tag_offset+11]&0xf0 == 0x10 { //key frame keyframe_num += 1 keyframe = append(keyframe, []byte{}) - last_avilable_offset = tag_offset + last_available_offset = tag_offset } if keyframe_num >= 0 { @@ -541,429 +147,3 @@ func Seach_stream_tag(buf []byte) (front_buf []byte, keyframe [][]byte, last_avi return } - -// same as Seach_stream_tag but faster -// func Seach_keyframe_tag(buf []byte) (front_buf []byte, keyframe [][]byte, err error) { - -// var ( -// sign = 0x00 -// // keyframe_num = -1 -// tag_num = 0 -// buf_offset = 0 -// ) - -// defer func() { -// if sign != 0x07 { -// front_buf = []byte{} -// } -// }() - -// //front_buf -// if header_offset := bytes.Index(buf, flv_header_sign); header_offset != -1 { -// front_buf = buf[header_offset : header_offset+flv_header_size+previou_tag_size] - -// for buf_offset+tag_header_size < len(buf) { - -// fmt.Println(`front_buf`, buf_offset) - -// tag_offset := buf_offset + bytes.IndexAny(buf[buf_offset:], string([]byte{video_tag, audio_tag, script_tag})) -// if tag_offset == buf_offset-1 { -// err = errors.New(`no found available tag`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //no found available video,audio,script tag -// } -// if tag_offset+tag_header_size > len(buf) { -// err = errors.New(`reach end when get tag header`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } - -// if buf[tag_offset+8]|buf[tag_offset+9]|buf[tag_offset+10] != 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("streamid error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //streamid error -// } - -// tag_size := int(F.Btoi32([]byte{0x00, buf[tag_offset+1], buf[tag_offset+2], buf[tag_offset+3]}, 0)) -// if tag_offset+tag_header_size+tag_size+previou_tag_size > len(buf) { -// err = errors.New(`reach end when get tag body`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } -// if tag_size == 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size error -// } - -// tag_size_check := int(F.Btoi32(buf[tag_offset+tag_header_size+tag_size:tag_offset+tag_header_size+tag_size+previou_tag_size], 0)) -// if tag_num+tag_size_check == 0 { -// tag_size_check = tag_size + tag_header_size -// } -// if tag_size_check != tag_size+tag_header_size { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size_check error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size_check error -// } - -// tag_num += 1 - -// if buf[tag_offset+7]|buf[tag_offset+4]|buf[tag_offset+5]|buf[tag_offset+6] == 0 { - -// if len(front_buf) != 0 { -// if (buf[tag_offset] == video_tag) && (sign&0x04 == 0x00) { -// sign |= 0x04 -// front_buf = append(front_buf, buf[tag_offset:tag_offset+tag_size_check+previou_tag_size]...) -// } else if (buf[tag_offset] == audio_tag) && (sign&0x02 == 0x00) { -// sign |= 0x02 -// front_buf = append(front_buf, buf[tag_offset:tag_offset+tag_size_check+previou_tag_size]...) -// } else if (buf[tag_offset] == script_tag) && (sign&0x01 == 0x00) { -// sign |= 0x01 -// front_buf = append(front_buf, buf[tag_offset:tag_offset+tag_size_check+previou_tag_size]...) -// } -// } -// buf_offset = tag_offset + tag_size_check + previou_tag_size -// } -// if sign == 0x07 { -// break -// } -// } -// } - -// //keyframe -// var last_keyframe_offset int -// for buf_offset+tag_header_size < len(buf) { -// fmt.Println(`keyframe`, buf_offset) -// tag_offset := buf_offset + bytes.Index(buf[buf_offset:], []byte{video_tag}) -// if tag_offset == buf_offset-1 { -// err = errors.New(`no found available tag`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //no found available video,audio,script tag -// } -// if tag_offset+tag_header_size > len(buf) { -// err = errors.New(`reach end when get tag header`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } - -// if buf[tag_offset+8]|buf[tag_offset+9]|buf[tag_offset+10] != 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("streamid error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //streamid error -// } - -// tag_size := int(F.Btoi32([]byte{0x00, buf[tag_offset+1], buf[tag_offset+2], buf[tag_offset+3]}, 0)) -// if tag_offset+tag_header_size+tag_size+previou_tag_size > len(buf) { -// err = errors.New(`reach end when get tag body`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } -// if tag_size == 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size error -// } - -// tag_size_check := int(F.Btoi32(buf[tag_offset+tag_header_size+tag_size:tag_offset+tag_header_size+tag_size+previou_tag_size], 0)) -// if tag_num+tag_size_check == 0 { -// tag_size_check = tag_size + tag_header_size -// } -// if tag_size_check != tag_size+tag_header_size { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size_check error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size_check error -// } - -// // fmt.Printf("%x\n",buf[tag_offset:tag_offset+tag_header_size]) - -// tag_num += 1 - -// if buf[tag_offset] == video_tag { -// if buf[tag_offset+11]&0xf0 == 0x10 { //key frame -// if last_keyframe_offset != 0 { -// keyframe = append(keyframe, buf[last_keyframe_offset:tag_offset]) -// } - -// last_keyframe_offset = tag_offset -// } -// } - -// buf_offset = tag_offset + tag_size_check + previou_tag_size -// } - -// return -// } - -// this fuction merge two stream and return the merge buffer,which has the newest frame. -// once len(merge_buf) isn't 0,old_buf can be drop and new_buf can be used from now on.or it's still need to keep buf until find the same tag. -// func Merge_stream(keyframe_lists [][][]byte, last_keyframe_timestramp int) (keyframe_timestamp int, merge_buf []byte, merged int) { - -// if len(keyframe_lists) == 0 { -// return -// } - -// // var keyframe_lists [][][]byte -// // for i:=0;i len(buf[0]) { -// err = errors.New(`reach end when get tag header`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } - -// if buf[0][tag_offset+8]|buf[0][tag_offset+9]|buf[0][tag_offset+10] != 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("streamid error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //streamid error -// } - -// tag_size := int(F.Btoi32([]byte{0x00, buf[0][tag_offset+1], buf[0][tag_offset+2], buf[0][tag_offset+3]}, 0)) -// if tag_offset+tag_header_size+tag_size+previou_tag_size > len(buf[0]) { -// err = errors.New(`reach end when get tag body`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } -// if tag_size == 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size error -// } - -// tag_size_check := int(F.Btoi32(buf[0][tag_offset+tag_header_size+tag_size:tag_offset+tag_header_size+tag_size+previou_tag_size], 0)) -// if tag_num+tag_size_check == 0 { -// tag_size_check = tag_size + tag_header_size -// } -// if tag_size_check != tag_size+tag_header_size { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size_check error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size_check error -// } - -// tag_num += 1 - -// time_stamp := int(F.Btoi32([]byte{buf[0][tag_offset+7], buf[0][tag_offset+4], buf[0][tag_offset+5], buf[0][tag_offset+6]}, 0)) - -// // if tag_num == 1 && last_keyframe_timestamp != 0 { -// // diff_time = last_keyframe_timestamp + 3000 - time_stamp -// // fmt.Printf("时间戳调整 last:%d now:%d diff:%d\n",last_keyframe_timestamp,time_stamp,diff_time) - -// if buf[0][tag_offset] == video_tag && buf[0][tag_offset+11]&0xf0 == 0x10 { -// first_t = time_stamp -// } else { -// last_t = time_stamp -// } -// // } - -// buf_offset = tag_offset + tag_size_check + previou_tag_size -// } -// for keyframe_interval = 100; keyframe_interval <= last_t-first_t; keyframe_interval += 100 { -// } -// } - -// tag_num = 0 -// base_keyframe_time = 0 - -// for i := 0; i < len(buf); i += 1 { -// keyframe_timestamp = last_keyframe_timestamp + keyframe_interval - -// for buf_offset := 0; buf_offset+tag_header_size < len(buf[i]); { - -// tag_offset := buf_offset + bytes.IndexAny(buf[i][buf_offset:], string([]byte{video_tag, audio_tag, script_tag})) -// if tag_offset == buf_offset-1 { -// err = errors.New(`no found available tag`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //no found available video,audio,script tag -// } -// if tag_offset+tag_header_size > len(buf[i]) { -// err = errors.New(`reach end when get tag header`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } - -// if buf[i][tag_offset+8]|buf[i][tag_offset+9]|buf[i][tag_offset+10] != 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("streamid error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //streamid error -// } - -// tag_size := int(F.Btoi32([]byte{0x00, buf[i][tag_offset+1], buf[i][tag_offset+2], buf[i][tag_offset+3]}, 0)) -// if tag_offset+tag_header_size+tag_size+previou_tag_size > len(buf[i]) { -// err = errors.New(`reach end when get tag body`) -// // fmt.Printf("last %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// return //buf end -// } -// if tag_size == 0 { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size error -// } - -// tag_size_check := int(F.Btoi32(buf[i][tag_offset+tag_header_size+tag_size:tag_offset+tag_header_size+tag_size+previou_tag_size], 0)) -// if tag_num+tag_size_check == 0 { -// tag_size_check = tag_size + tag_header_size -// } -// if tag_size_check != tag_size+tag_header_size { -// buf_offset = tag_offset + 1 -// // fmt.Printf("tag_size_check error %x\n",buf[tag_offset:tag_offset+tag_header_size]) -// continue //tag_size_check error -// } - -// tag_num += 1 - -// time_stamp := int(F.Btoi32([]byte{buf[i][tag_offset+7], buf[i][tag_offset+4], buf[i][tag_offset+5], buf[i][tag_offset+6]}, 0)) - -// // if tag_num == 1 && last_keyframe_timestamp != 0 { -// // diff_time = last_keyframe_timestamp + 3000 - time_stamp -// // fmt.Printf("时间戳调整 last:%d now:%d diff:%d\n",last_keyframe_timestamp,time_stamp,diff_time) - -// if buf[i][tag_offset] == video_tag && buf[i][tag_offset+11]&0xf0 == 0x10 { -// // if {//key frame -// base_keyframe_time = time_stamp -// time_stamp = keyframe_timestamp -// last_keyframe_timestamp = keyframe_timestamp -// // fmt.Printf("当前关键帧时间戳 %d %d=>%d\n",last_keyframe_timestamp,base_keyframe_time,keyframe_timestamp) -// // } -// } else { -// time_stamp += keyframe_timestamp - base_keyframe_time -// } -// // } - -// time_stamp_byte := F.Itob32(int32(time_stamp)) - -// buf[i][tag_offset+7] = time_stamp_byte[0] -// buf[i][tag_offset+4] = time_stamp_byte[1] -// buf[i][tag_offset+5] = time_stamp_byte[2] -// buf[i][tag_offset+6] = time_stamp_byte[3] - -// buf_offset = tag_offset + tag_size_check + previou_tag_size -// } -// } -// return -// } - -// func SearchStreamOffset(buf []byte) (front_buf []byte, available_offset int) { -// //get flv header(9byte) + FirstTagSize(4byte) -// { -// if bytes.Index(buf, flv_header_sign) == 0 { -// front_buf = buf[:flv_header_size+previou_tag_size] -// } -// } - -// var sign = 0x00 -// for buf_offset := 0; buf_offset < len(buf); { -// if tag_offset := buf_offset + bytes.IndexAny(buf[buf_offset:], string([]byte{video_tag, audio_tag, script_tag})); tag_offset == buf_offset-1 { -// return //no found available video,audio,script tag -// } else if streamid_offset := tag_offset + bytes.Index(buf[tag_offset:], []byte{0x00, 0x00, 0x00}); streamid_offset == tag_offset-1 { -// return //no found available streamid -// } else if streamid_offset-8 != tag_offset { -// buf_offset = tag_offset + 1 -// continue //streamid offset error -// } else if time_offset := tag_offset + 4; bytes.Index(buf[time_offset:time_offset+2], []byte{0x00, 0x00, 0x00}) == 0 { - -// size := int(F.Btoi32(append([]byte{0x00}, buf[tag_offset+1:tag_offset+3]...), 0) + 7) -// if (buf[tag_offset] == video_tag) && (sign&0x04 == 0x00) { -// sign |= 0x04 -// front_buf = append(front_buf, buf[tag_offset:tag_offset+size]...) -// } else if (buf[tag_offset] == audio_tag) && (sign&0x02 == 0x00) { -// sign |= 0x02 -// front_buf = append(front_buf, buf[tag_offset:tag_offset+size]...) -// } else if (buf[tag_offset] == script_tag) && (sign&0x01 == 0x00) { -// sign |= 0x01 -// front_buf = append(front_buf, buf[tag_offset:tag_offset+size]...) -// } - -// buf_offset = tag_offset + 1 -// continue //time error - -// } else { -// available_offset = tag_offset -// return -// } -// } -// return -// } diff --git a/Reply/fmp4Decode.go b/Reply/fmp4Decode.go index d8ee4f6..416e9db 100644 --- a/Reply/fmp4Decode.go +++ b/Reply/fmp4Decode.go @@ -115,7 +115,7 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) (b []byte, err error) { return b, nil } -func (t *Fmp4Decoder) Seach_stream_fmp4(buf []byte, keyframes *slice.Buf[byte]) (cu int, err error) { +func (t *Fmp4Decoder) Search_stream_fmp4(buf []byte, keyframes *slice.Buf[byte]) (cu int, err error) { if len(t.traks) == 0 { err = errors.New("未初始化traks") return diff --git a/Reply/stream.go b/Reply/stream.go index ef9dc91..e8c278c 100644 --- a/Reply/stream.go +++ b/Reply/stream.go @@ -643,7 +643,7 @@ func (t *M4SStream) saveStreamFlv() (e error) { } if !buff.IsEmpty() { - front_buf, keyframe, last_avilable_offset, e := Seach_stream_tag(buff.GetCopyBuf()) + front_buf, keyframe, last_available_offset, e := Search_stream_tag(buff.GetCopyBuf()) if e != nil { if strings.Contains(e.Error(), `no found available tag`) { continue @@ -663,9 +663,9 @@ func (t *M4SStream) saveStreamFlv() (e error) { t.Stream_msg.Push_tag(`data`, frame) } } - if last_avilable_offset > 1 { + if last_available_offset > 1 { // fmt.Println("write Sync") - buff.RemoveFront(last_avilable_offset - 1) + buff.RemoveFront(last_available_offset - 1) out.Sync() } } @@ -900,7 +900,7 @@ func (t *M4SStream) saveStreamM4s() (e error) { download_seq = append(download_seq[:k], download_seq[k+1:]...) k -= 1 - last_avilable_offset, err := fmp4Decoder.Seach_stream_fmp4(buf.GetPureBuf(), fmp4KeyFrames) + last_available_offset, err := fmp4Decoder.Search_stream_fmp4(buf.GetPureBuf(), fmp4KeyFrames) if err != nil { if !errors.Is(err, io.EOF) { t.log.L(`E: `, err) @@ -917,12 +917,12 @@ func (t *M4SStream) saveStreamM4s() (e error) { buf.Reset() } else { fmp4KeyFrames.Reset() - last_avilable_offset = 0 + last_available_offset = 0 } } // no, _ := v.getNo() - // fmt.Println(no, "fmp4KeyFrames", fmp4KeyFrames.size(), last_avilable_offset, err) + // fmt.Println(no, "fmp4KeyFrames", fmp4KeyFrames.size(), last_available_offset, err) if !fmp4KeyFrames.IsEmpty() { fmp4KeyFramesBuf = fmp4KeyFrames.GetCopyBuf() @@ -935,7 +935,7 @@ func (t *M4SStream) saveStreamM4s() (e error) { } } - buf.RemoveFront(last_avilable_offset) + buf.RemoveFront(last_available_offset) } // 停止录制