视频分析2.0 多进程拆分仓库
zhangmeng
2019-05-06 4ed75d3bacf3dcf91889fb693b179557eb7b7509
decoder ipc
5个文件已修改
66 ■■■■■ 已修改文件
decoder/go.mod 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/go.sum 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/main.go 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/valib/ipc @ f28fa1 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/work/service/decoder.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/go.mod
@@ -2,4 +2,7 @@
go 1.12
require nanomsg.org/go-mangos v1.4.0
require (
    github.com/golang/snappy v0.0.1
    nanomsg.org/go-mangos v1.4.0
)
decoder/go.sum
@@ -1,2 +1,4 @@
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
nanomsg.org/go-mangos v1.4.0 h1:pVRLnzXePdSbhWlWdSncYszTagERhMG5zK/vXYmbEdM=
nanomsg.org/go-mangos v1.4.0/go.mod h1:MOor8xUIgwsRMPpLr9xQxe7bT7rciibScOqVyztNxHQ=
decoder/main.go
@@ -7,6 +7,8 @@
    "encoding/json"
    "flag"
    "fmt"
    "strconv"
    "strings"
    // "videoServer/demo"
)
@@ -16,6 +18,8 @@
    ipcURL string
    proc   string
    testIt bool
)
func init() {
@@ -23,6 +27,8 @@
    flag.StringVar(&picFolder, "f", ".", "test pic folder")
    flag.StringVar(&ipcURL, "ipc", "ipc:///tmp/pic.ipc", "ipc label")
    flag.BoolVar(&testIt, "test", false, "use test")
}
// CameraInfo camera info
@@ -67,33 +73,36 @@
func main() {
    flag.Parse()
    if testIt {
    test()
    }
    // ctx, cancel := context.WithCancel(context.Background())
    ctx, cancel := context.WithCancel(context.Background())
    // ch := make(chan CameraInfo)
    // go recvFromIPC(ctx, "tcp://192.168.1.124:7000", ch)
    ch := make(chan CameraInfo)
    go recvFromIPC(ctx, "tcp://192.168.1.124:7000", ch)
    // for {
    //     select {
    //     case <-ctx.Done():
    //         return
    //     case c := <-ch:
    //         if _, ok := mapCI[c.ID]; !ok {
    //             mapCI[c.ID] = c
    //             ipc := "tcp://192.168.1.124:" + strconv.Itoa(port)
    //             port++
    //             fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipc, c.URL, c.ID)
    // demo.SendByIPC("rtsp://admin:a1234567@192.168.1.188:554/h264/ch1/main/av_stream", "cid0",
    //     "tcp://192.168.1.140:7000", false)
    for {
        select {
        case <-ctx.Done():
            return
        case c := <-ch:
            if _, ok := mapCI[c.ID]; !ok {
                mapCI[c.ID] = c
                ipc := "tcp://192.168.1.124:" + strconv.Itoa(port)
                port++
                fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipc, c.URL, c.ID)
    //             url := strings.TrimSpace(c.URL)
    //             id := strings.TrimSpace(c.ID)
    //             i := strings.TrimSpace(ipc)
    //             go demo.SendByIPC(url, id, i)
    //         }
    //     }
    // }
    // cancel()
                url := strings.TrimSpace(c.URL)
                id := strings.TrimSpace(c.ID)
                i := strings.TrimSpace(ipc)
                go demo.SendByIPC(url, id, i, false)
            }
        }
    }
    cancel()
}
func test() {
@@ -101,5 +110,5 @@
    fmt.Println(picFolder)
    demo.SendByIPC(streamURL, "camera1", ipcURL, true)
    demo.SendByIPC(streamURL, "camera1", ipcURL, false)
}
decoder/valib/ipc
@@ -1 +1 @@
Subproject commit 8841f9d2154a8e0653d30fdc04bde8a772665c8c
Subproject commit f28fa12daea7e9522e407df355823b3b9fba7ac9
decoder/work/service/decoder.go
@@ -72,8 +72,8 @@
    go dec.serializeImageInfo(imageChan, dataChan)
    // str := "hello"
    gf.ActiveDecoder(func(d *[]byte, w, h *int) {
        fmt.Println("get a pic")
        if *w > 0 && *h > 0 {
            i := ImageInfo{*d, *w, *h, dec.cameraID}
            imageChan <- i