视频分析2.0 多进程拆分仓库
zhangmeng
2019-05-07 f963cd025c1aa88ac8b211e24f46ceb0eb64c418
decoder/work/service/ipcsender.go
@@ -7,6 +7,7 @@
   "decoder/valib/ipc"
   "encoding/gob"
   "fmt"
   "time"
)
// Sender decoder ingo
@@ -61,21 +62,32 @@
   gf := goffmpeg.New()
   if gf != nil {
      s.ffmpeg = gf
   } else {
      fmt.Println("create decoder ffmpeg error")
      return
   }
   imageChan := make(chan ImageInfo)
   dataChan := make(chan []byte)
   go s.serializeImageInfo(imageChan, dataChan)
   gf.ActiveDecoder(func(d *[]byte, w, h *int) {
      if *w > 0 && *h > 0 {
         img := ImageInfo{*d, *w, *h}
         imageChan <- img
   gf.BuildDecoder()
   go func(f *goffmpeg.GoFFMPEG, ch chan<- ImageInfo) {
      for {
         data, wid, hei := f.GetPicDecoder()
         if wid > 0 && hei > 0 {
            img := ImageInfo{Data: data, Width: wid, Height: hei}
            ch <- img
      } else {
         fmt.Println("decode jpg error")
            time.Sleep(time.Millisecond * time.Duration(10))
      }
   })
      }
   }(gf, imageChan)
   gf.Run(s.streamURL)
   i.SendFromChannel(dataChan)
}