From f963cd025c1aa88ac8b211e24f46ceb0eb64c418 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 07 五月 2019 14:19:29 +0800 Subject: [PATCH] 多个解码单元同时运行,注意tcp地址 --- decoder/work/service/ipcsender.go | 26 +++++++++++++++++++------- 1 files changed, 19 insertions(+), 7 deletions(-) diff --git a/decoder/work/service/ipcsender.go b/decoder/work/service/ipcsender.go index 102c735..6c05f7a 100644 --- a/decoder/work/service/ipcsender.go +++ b/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 - } else { - fmt.Println("decode jpg error") + 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 { + time.Sleep(time.Millisecond * time.Duration(10)) + } } - }) + + }(gf, imageChan) + gf.Run(s.streamURL) + i.SendFromChannel(dataChan) } -- Gitblit v1.8.0