can use with web and camera
| | |
| | | // web端初始化 |
| | | CreateCamera("virtual-faceextract-sdk-pull_2" , "web") |
| | | |
| | | |
| | | |
| | | // go AutoDelCamera(util.Cameraflag) |
| | | } |
| | | |
| | |
| | | |
| | | func Recv(socket SocketContext, remote string ) { |
| | | |
| | | var recvmsg protomsg.Recvmsg |
| | | var recvmessage []byte |
| | | var imagemsg protomsg.Image |
| | | var err error |
| | | for { |
| | | select { |
| | | case <-socket.Context.Done(): |
| | | fmt.Println("listen recv quit") |
| | | return |
| | | default: |
| | | if msg, err := socket.Sock.Recv(); err != nil { |
| | | if recvmessage, err = socket.Sock.Recv(); err != nil { |
| | | fmt.Println("err is: ", err) |
| | | continue |
| | | } else { |
| | | if err := proto.Unmarshal(msg,&recvmsg); err != nil { |
| | | fmt.Println("recv msg is not protomsg.Recvmg") |
| | | continue |
| | | } |
| | | } |
| | | |
| | | unmsg, err := util.UnCompress(recvmessage) |
| | | if err != nil { |
| | | fmt.Println(err) |
| | | continue |
| | | } |
| | | |
| | | if err := proto.Unmarshal(unmsg,&imagemsg); err != nil { |
| | | fmt.Println("recv msg is not protomsgImage") |
| | | continue |
| | | } |
| | | |
| | | fmt.Println("============== one msg input ==========") |
| | | switch remote { |
| | | case "camera": |
| | | for _, taskid := range GetAlltask(recvmsg.Id) { |
| | | // time.Sleep(5 * time.Second) |
| | | fmt.Println("id: ", recvmsg.Id , " taskid: ", taskid) |
| | | Taskdolist(recvmsg.Id, recvmsg.Addr, taskid, recvmsg.Picdata) |
| | | for _, taskid := range GetAlltask(imagemsg.Cid) { |
| | | // time.Sleep(5 * time.Second) |
| | | fmt.Println("id: ", imagemsg.Cid, " taskid: ", taskid) |
| | | Taskdolist(imagemsg.Cid, "", taskid, recvmessage) |
| | | } |
| | | case "web": |
| | | fmt.Println("id: ", recvmsg.Id , " taskid: ", "92496BDF-2BFA-98F2-62E8-96DD9866ABD2") |
| | | Taskdolist(recvmsg.Id, recvmsg.Addr, "92496BDF-2BFA-98F2-62E8-96DD9866ABD2", recvmsg.Picdata) |
| | | fmt.Println("id: ", imagemsg.Cid , " taskid: ", "92496BDF-2BFA-98F2-62E8-96DD9866ABD2") |
| | | Taskdolist(imagemsg.Cid,"", "92496BDF-2BFA-98F2-62E8-96DD9866ABD2", recvmessage) |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | require ( |
| | | basic.com/dbapi.git v0.0.0-20190620073851-30a7d0574bbc |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190626081036-01b33da00793 |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190628022108-13a4fccc509f |
| | | basic.com/valib/deliver.git v0.0.0-20190529080650-3e64847c9bce |
| | | github.com/ajg/form v1.5.1 // indirect |
| | | github.com/gogo/protobuf v1.2.1 |
| | | github.com/golang/protobuf v1.3.1 |
| | | github.com/gorilla/websocket v1.4.0 // indirect |
| | | github.com/pierrec/lz4 v2.0.5+incompatible |
| | | github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a |
| | | github.com/tmthrgd/go-sem v0.0.0-20160607101025-0214dbf53877 // indirect |
| | | github.com/tmthrgd/go-shm v0.0.0-20170117044846-90afcfcd5ee9 // indirect |
| | |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190621090107-c5cf390e19bb/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU= |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190626081036-01b33da00793 h1:dy4DnHRIcQf5DaiLl/IwE3fqZ6a21MXqMTFUmmVAG1c= |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190626081036-01b33da00793/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU= |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190628022108-13a4fccc509f h1:mBsaoP1YlsFkgBwxm2KQ9U80Lj2b2wf3gowPlxf5ifQ= |
| | | basic.com/pubsub/protomsg.git v0.0.0-20190628022108-13a4fccc509f/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU= |
| | | basic.com/valib/deliver.git v0.0.0-20190529080650-3e64847c9bce h1:/D6k+FVN1sMqLz6tMlsIl9bKwE2Mpc5d4QfPh0y4DSQ= |
| | | basic.com/valib/deliver.git v0.0.0-20190529080650-3e64847c9bce/go.mod h1:bkYiTUGzckyNOjAgn9rB/DOjFzwoSHJlruuWQ6hu6IY= |
| | | github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= |
| | |
| | | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= |
| | | github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= |
| | | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= |
| | | github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= |
| | | github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= |
| | | github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= |
| | | github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= |
| | | github.com/tmthrgd/go-sem v0.0.0-20160607101025-0214dbf53877 h1:n65+IT/xy5+trHm3Zpg9+j7IO4n8pBcPzvaKbMolW8U= |
| | |
| | | func Dealextern() { |
| | | for { |
| | | select { |
| | | case esmsg:= <-SdkMap["es"]: |
| | | fmt.Println(esmsg) |
| | | case <-SdkMap["es"]: |
| | | fmt.Println("es finanl sdk!") |
| | | } |
| | | } |
| | | } |
| | |
| | | if err != nil { |
| | | fmt.Println("proto marshal error ", err) |
| | | continue |
| | | } |
| | | |
| | | fmt.Printf("从管道sdkid=%s 接受数据 %d\n", sdkid, len(data)) |
| | | fmt.Println() |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | package util |
| | | |
| | | import( |
| | | "github.com/pierrec/lz4" |
| | | "fmt" |
| | | ) |
| | | |
| | | |
| | | |
| | | // 1. oldstring element is not in new : abandon(delete) |
| | | // 2. new element is not in oldstring : add(add) |
| | | func Difference(oldstring []string, newstring []string) map[string]string { |
| | |
| | | } |
| | | return diff |
| | | } |
| | | |
| | | // UnCompress uncompress |
| | | func UnCompress(in []byte) ([]byte, error) { |
| | | out := make([]byte, 10*len(in)) |
| | | n, err := lz4.UncompressBlock(in, out) |
| | | if err != nil { |
| | | fmt.Println("uncompress error: ", err) |
| | | return nil, err |
| | | } |
| | | out = out[:n] // uncompressed data |
| | | return out, nil |
| | | } |
| | | |
| | | // Compress compress |
| | | func Compress(in []byte) ([]byte, error) { |
| | | out := make([]byte, len(in)) |
| | | ht := make([]int, 64<<10) // buffer for the compression table |
| | | n, err := lz4.CompressBlock(in, out, ht) |
| | | if err != nil { |
| | | fmt.Println("compress: ", err) |
| | | return nil, err |
| | | } |
| | | if n >= len(in) { |
| | | fmt.Println("image is not compressible") |
| | | } |
| | | out = out[:n] // compressed data |
| | | return out, nil |
| | | } |