]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
fix
authorqydysky <32743305+qydysky@users.noreply.github.com>
Wed, 9 Nov 2022 15:19:25 +0000 (23:19 +0800)
committerqydysky <32743305+qydysky@users.noreply.github.com>
Wed, 9 Nov 2022 15:19:25 +0000 (23:19 +0800)
Reply/fmp4Decode.go
demo/go.mod
demo/go.sum
go.mod
go.sum

index f5fb43abf194435f90418fecd762c972e636370f..192799fe9ed6eeeb4a28d97324e5e46df613d5c4 100644 (file)
@@ -26,11 +26,11 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) error {
                        break
                }
                moovI = cu + moovI - 4
-               cu = moovI
                moovE := moovI + int(F.Btoi(buf, moovI, 4))
                if moovE > len(buf) {
                        return errors.New("moov包破损")
                }
+               cu = moovI
 
                for cu < moovE {
                        //trak
@@ -39,11 +39,11 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) error {
                                break
                        }
                        trakI = cu + trakI - 4
-                       cu = trakI
                        trakE := trakI + int(F.Btoi(buf, trakI, 4))
                        if trakE > moovE {
                                return errors.New("trak包破损")
                        }
+                       cu = trakI
 
                        //tkhd
                        tkhdI := bytes.Index(buf[cu:], []byte("tkhd"))
@@ -51,11 +51,11 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) error {
                                return errors.New("未找到tkhd包")
                        }
                        tkhdI = cu + tkhdI - 4
-                       cu = tkhdI
                        tkhdE := tkhdI + int(F.Btoi(buf, tkhdI, 4))
                        if tkhdE > trakE {
                                return errors.New("tkhd包破损")
                        }
+                       cu = tkhdI
 
                        //mdia
                        mdiaI := bytes.Index(buf[cu:], []byte("mdia"))
@@ -63,11 +63,11 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) error {
                                return errors.New("未找到mdia包")
                        }
                        mdiaI = cu + mdiaI - 4
-                       cu = mdiaI
                        mdiaE := mdiaI + int(F.Btoi(buf, mdiaI, 4))
                        if mdiaE > trakE {
                                return errors.New("mdia包破损")
                        }
+                       cu = mdiaI
 
                        //mdhd
                        mdhdI := bytes.Index(buf[cu:], []byte("mdhd"))
@@ -75,11 +75,11 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) error {
                                return errors.New("未找到mdhd包")
                        }
                        mdhdI = cu + mdhdI - 4
-                       cu = mdhdI
                        mdhdE := mdhdI + int(F.Btoi(buf, mdhdI, 4))
                        if mdhdE > mdiaE {
                                return errors.New("mdhd包破损")
                        }
+                       cu = mdhdI
 
                        //hdlr
                        hdlrI := bytes.Index(buf[cu:], []byte("hdlr"))
@@ -87,11 +87,11 @@ func (t *Fmp4Decoder) Init_fmp4(buf []byte) error {
                                return errors.New("未找到hdlr包")
                        }
                        hdlrI = cu + hdlrI - 4
-                       cu = hdlrI
                        hdlrE := hdlrI + int(F.Btoi(buf, hdlrI, 4))
                        if hdlrE > mdiaE {
                                return errors.New("hdlr包破损")
                        }
+                       cu = hdlrI
 
                        tackId := int(F.Btoi(buf, tkhdI+20, 4))
                        if t.traks == nil {
@@ -248,15 +248,11 @@ func (t *Fmp4Decoder) Seach_stream_fmp4(buf []byte) (keyframes [][]byte, last_av
                        case 4:
                                // log.Default().Println("set audio to:", int32(videoTime*float64(audioTimeScale)))
                                date := F.Itob32(int32(videoTime * float64(audioTimeScale)))
-                               for i := 0; i < audioTimeSize; i += 1 {
-                                       buf[audioTimeIndex+i] = date[i]
-                               }
+                               copy(buf[audioTimeIndex:], date)
                        case 8:
                                // log.Default().Println("set audio to:", int64(videoTime*float64(audioTimeScale)))
                                date := F.Itob64(int64(videoTime * float64(audioTimeScale)))
-                               for i := 0; i < audioTimeSize; i += 1 {
-                                       buf[audioTimeIndex+i] = date[i]
-                               }
+                               copy(buf[audioTimeIndex:], date)
                        }
                }
 
index 97bfbd3b682bf8ae40335a08b8252e8f8a896cc0..299647fd319ca9ceba1be4a2cf7972593493514f 100644 (file)
@@ -15,11 +15,11 @@ require (
        github.com/mdp/qrterminal/v3 v3.0.0 // indirect
        github.com/miekg/dns v1.1.50 // indirect
        github.com/mitchellh/mapstructure v1.5.0 // indirect
-       github.com/qydysky/part v0.10.17 // indirect
+       github.com/qydysky/part v0.18.19 // indirect
        github.com/shirou/gopsutil v3.21.11+incompatible // indirect
        github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
        github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
-       github.com/stretchr/testify v1.7.1 // indirect
+       github.com/stretchr/testify v1.8.1 // indirect
        github.com/thedevsaddam/gojsonq/v2 v2.5.2 // indirect
        github.com/tklauser/go-sysconf v0.3.10 // indirect
        github.com/tklauser/numcpus v0.5.0 // indirect
index c8bf6c465bfc2932c4d6fc3e9e6e87036da958c2..eb5e374f59c948a7bf94cc1d3ec7ab69c3cc88e0 100644 (file)
@@ -11,6 +11,7 @@ github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 h1
 github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5/go.mod h1:P5w+dDqQEbCMFAkmucNcEQ6xgAt/NP+Aw58OQfY/H/o=
 github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY=
 github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
@@ -119,6 +120,10 @@ github.com/qydysky/part v0.10.16 h1:mzrCQEPkQOH4MK+vdPAvJboYhQYBdiKbw2QdvDKinX0=
 github.com/qydysky/part v0.10.16/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
 github.com/qydysky/part v0.10.17 h1:xcMgJaEvPlOPAEfOniTZZM/pDiafWW3FA5ZQXNPthpI=
 github.com/qydysky/part v0.10.17/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.18 h1:GGHuGBsKI6h41EzzVml3FMbqDS1dh88wSDmQBfq2jtw=
+github.com/qydysky/part v0.10.18/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw=
+github.com/qydysky/part v0.18.19 h1:s4CL+ljiGhySX633x0ohN6NA2c7T/BWg5YVpjm4xo30=
+github.com/qydysky/part v0.18.19/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw=
 github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil v3.21.5+incompatible h1:OloQyEerMi7JUrXiNzy8wQ5XN+baemxSl12QgIzt0jc=
 github.com/shirou/gopsutil v3.21.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
@@ -129,8 +134,12 @@ github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDq
 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/thedevsaddam/gojsonq v2.3.0+incompatible h1:i2lFTvGY4LvoZ2VUzedsFlRiyaWcJm3Uh6cQ9+HyQA8=
 github.com/thedevsaddam/gojsonq v2.3.0+incompatible/go.mod h1:RBcQaITThgJAAYKH7FNp2onYodRz8URfsuEGpAch0NA=
 github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0=
@@ -226,5 +235,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
 rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=
diff --git a/go.mod b/go.mod
index 026093c4389a30733bd67db66e44fc3d156d762c..96cf06f39303b33d8565b41385f86d1d22a22b18 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -7,7 +7,7 @@ require (
        github.com/gofrs/uuid v4.3.0+incompatible
        github.com/gotk3/gotk3 v0.6.1
        github.com/mdp/qrterminal/v3 v3.0.0
-       github.com/qydysky/part v0.10.17
+       github.com/qydysky/part v0.18.19
        github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
        github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
        golang.org/x/text v0.3.8
@@ -21,7 +21,7 @@ require (
        github.com/miekg/dns v1.1.50 // indirect
        github.com/mitchellh/mapstructure v1.5.0 // indirect
        github.com/shirou/gopsutil v3.21.11+incompatible // indirect
-       github.com/stretchr/testify v1.7.1 // indirect
+       github.com/stretchr/testify v1.8.1 // indirect
        github.com/thedevsaddam/gojsonq/v2 v2.5.2 // indirect
        github.com/tklauser/go-sysconf v0.3.10 // indirect
        github.com/tklauser/numcpus v0.5.0 // indirect
diff --git a/go.sum b/go.sum
index f31028213f10cfbec4e0cec3548ad984a7130080..75ef6c4fc82fece9b3acad2c5fc80704becbc90e 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -5,6 +5,7 @@ github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 h1
 github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5/go.mod h1:P5w+dDqQEbCMFAkmucNcEQ6xgAt/NP+Aw58OQfY/H/o=
 github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
 github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
@@ -53,6 +54,10 @@ github.com/qydysky/part v0.10.16 h1:mzrCQEPkQOH4MK+vdPAvJboYhQYBdiKbw2QdvDKinX0=
 github.com/qydysky/part v0.10.16/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
 github.com/qydysky/part v0.10.17 h1:xcMgJaEvPlOPAEfOniTZZM/pDiafWW3FA5ZQXNPthpI=
 github.com/qydysky/part v0.10.17/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.18 h1:GGHuGBsKI6h41EzzVml3FMbqDS1dh88wSDmQBfq2jtw=
+github.com/qydysky/part v0.10.18/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw=
+github.com/qydysky/part v0.18.19 h1:s4CL+ljiGhySX633x0ohN6NA2c7T/BWg5YVpjm4xo30=
+github.com/qydysky/part v0.18.19/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw=
 github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
 github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
@@ -61,8 +66,12 @@ github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDq
 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/thedevsaddam/gojsonq v2.3.0+incompatible/go.mod h1:RBcQaITThgJAAYKH7FNp2onYodRz8URfsuEGpAch0NA=
 github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0=
 github.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs=
@@ -132,5 +141,6 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
 rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=