视频分析2.0 多进程拆分仓库
zhangmeng
2019-05-06 e67660d0bf785eb2feaceee1ae96d3a66b23ba49
code
2个文件已修改
35 ■■■■■ 已修改文件
decoder/main.go 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/valib/goffmpeg @ 700080 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
decoder/main.go
@@ -19,6 +19,8 @@
    proc   string
    testIt bool
    asServer bool
)
func init() {
@@ -28,6 +30,8 @@
    flag.StringVar(&ipcURL, "ipc", "ipc:///tmp/pic.ipc", "ipc label")
    flag.BoolVar(&testIt, "test", false, "use test")
    flag.BoolVar(&asServer, "server", false, "run ipc as server")
}
// CameraInfo camera info
@@ -43,11 +47,13 @@
}
var (
    mapCI = make(map[string]CameraInfo)
    port  = 7001
    mapCameraInfo = make(map[string]CameraInfo)
    tcp  = `tcp://192.168.1.124`
    port = 7000
)
func recvFromIPC(ctx context.Context, url string, ch chan<- CameraInfo) {
func recvCameraInfoFromIPC(ctx context.Context, url string, ch chan<- CameraInfo) {
    ipc := ipc.NewClient(ctx, url)
    for {
@@ -79,25 +85,25 @@
    ctx, cancel := context.WithCancel(context.Background())
    ch := make(chan CameraInfo)
    go recvFromIPC(ctx, "tcp://192.168.1.124:7000", ch)
    tcpURL := tcp + strconv.Itoa(port)
    port++
    go recvCameraInfoFromIPC(ctx, tcpURL, ch)
    // 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)
            if _, ok := mapCameraInfo[c.ID]; !ok {
                mapCameraInfo[c.ID] = c
                ipcAddr := tcp + strconv.Itoa(port)
                port++
                fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipc, c.URL, c.ID)
                fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipcAddr, c.URL, c.ID)
                url := strings.TrimSpace(c.URL)
                id := strings.TrimSpace(c.ID)
                i := strings.TrimSpace(ipc)
                go runSender(id, url, i)
                addr := strings.TrimSpace(ipcAddr)
                go runSender(id, url, addr)
            }
        }
    }
@@ -106,6 +112,9 @@
func runSender(cameraID, rtspURL, ipcLabel string) {
    d := srv.NewSender(cameraID, rtspURL, ipcLabel)
    if asServer {
        d.RunAsServer()
    }
    d.RunAsClient()
}
func test() {
decoder/valib/goffmpeg
@@ -1 +1 @@
Subproject commit 7f8e310acc232c67ba8e6f72028d677010d1051a
Subproject commit 70008056eb8983dae4ee2c960c043ae69191d03e