return buffer.Bytes()
}
-func btoi64(b []byte) int64 {
- var buffer int64
- err := binary.Read(bytes.NewReader(b), binary.BigEndian, &buffer)
- if err != nil {
- p.Logf().E(err)
- }
- return buffer
-}
-
-func btoi32(b []byte) int32 {
- var buffer int32
- err := binary.Read(bytes.NewReader(b), binary.BigEndian, &buffer)
- if err != nil {
- p.Logf().E(err)
- }
- return buffer
-}
-
-func btoi16(b []byte) int16 {
- var buffer int16
- err := binary.Read(bytes.NewReader(b), binary.BigEndian, &buffer)
- if err != nil {
- p.Logf().E(err)
- }
- return buffer
-}
-
func Btoi64(b []byte, offset int) int64 {
for len(b) < 8 {
b = append([]byte{0x00}, b...)
return btoi64(buf)
}
+func Btoui32(b []byte, offset int) uint32 {
+ return btoui32(b[offset : offset+4])
+}
+
func Btoi32(b []byte, offset int) int32 {
for len(b) < 4 {
b = append([]byte{0x00}, b...)
}
- return btoi32(b[offset : offset+4])
+ return int32(btoui32(b[offset : offset+4]))
+}
+
+func Btoui16(b []byte, offset int) uint16 {
+ for len(b) < 2 {
+ b = append([]byte{0x00}, b...)
+ }
+ return btoui16(b[offset : offset+2])
}
func Btoi16(b []byte, offset int) int16 {
for len(b) < 2 {
b = append([]byte{0x00}, b...)
}
- return btoi16(b[offset : offset+2])
+ return int16(btoui16(b[offset : offset+2]))
+}
+
+func btoi64(b []byte) int64 {
+ var buffer int64
+ err := binary.Read(bytes.NewReader(b), binary.BigEndian, &buffer)
+ if err != nil {
+ p.Logf().E(err)
+ }
+ return buffer
+}
+
+func btoui32(b []byte) uint32 {
+ var buffer uint32
+ err := binary.Read(bytes.NewReader(b), binary.BigEndian, &buffer)
+ if err != nil {
+ p.Logf().E(err)
+ }
+ return buffer
+}
+
+func btoui16(b []byte) uint16 {
+ var buffer uint16
+ err := binary.Read(bytes.NewReader(b), binary.BigEndian, &buffer)
+ if err != nil {
+ p.Logf().E(err)
+ }
+ return buffer
}
import "testing"
func TestBtoi32(t *testing.T) {
- t.Log(Btoi64([]byte{0xff, 0x0f, 0xff, 0xff}, 0))
+ t.Log(int32(Btoui32([]byte{0xff, 0x0f, 0xff, 0xff}, 0)))
+ t.Log(Btoi32([]byte{0xff, 0xff, 0xff, 0xff}, 0))
+ t.Log(Btoi32([]byte{0x00, 0xff, 0xff, 0xff}, 0))
}
func TestItob32(t *testing.T) {
return
}
+ scanPort := int(c.K_v.LoadV("扫码登录端口").(float64))
+ if scanPort <= 0 {
+ scanPort = sys.Sys().GetFreePort()
+ }
var server = &http.Server{
- Addr: "0.0.0.0:" + strconv.Itoa(sys.Sys().GetFreePort()),
+ Addr: "0.0.0.0:" + strconv.Itoa(scanPort),
}
+
{ //生成二维码
qr.WriteFile(img_url, qr.Medium, 256, `qr.png`)
if !p.Checkfile().IsExist(`qr.png`) {
v += "0.flv"
} else if file.New(v+"0.mp4", 0, true).IsExist() {
v += "0.mp4"
+ } else {
+ w.Header().Set("Retry-After", "1")
+ w.WriteHeader(http.StatusServiceUnavailable)
+ flog.L(`E: `, "未找到流文件", v)
+ return
}
var rangeHeaderNum int
keyframe = append(keyframe, buf[moofI:mdatE]...)
}
+ if cu == 0 {
+ err = errors.New("未找到moof")
+ }
+ if last_avilable_offset == 0 && len(buf) > 1024*1024*20 {
+ err = errors.New("buf超过20M")
+ }
return
}
timed := tmp[len(tmp)-1].createdTime.Sub(t.last_m4s.createdTime).Seconds()
nos, _ := tmp[len(tmp)-1].getNo()
noe, _ := t.last_m4s.getNo()
- if math.Abs(timed-float64(nos-noe)) > 2 {
+ if timed > 3 && math.Abs(timed-float64(nos-noe)) > 2 {
e = fmt.Errorf("服务器 %s 发生故障 %d 秒产出了 %d 切片", m3u8_url.Host, int(timed), nos-noe)
continue
}
"cookie解密私钥": "private.pem",
"扫码登录-help": "当扫码登陆设置为true时,每次启动会检查,若失败则会要求登录",
"扫码登录": true,
+ "扫码登录端口": 0,
"扫码登录自动打开标签页": false,
"网络中断不退出": true,
"http代理地址-help":"例http://127.0.0.1:38223 为空时不使用",