| | |
| | | "fmt" |
| | | "time" |
| | | |
| | | "basic.com/valib/goffmpeg.git" |
| | | |
| | | "basic.com/valib/godraw.git" |
| | | "basic.com/valib/goffmpeg.git" |
| | | "github.com/disintegration/imaging" |
| | | ) |
| | | |
| | |
| | | |
| | | var ret []byte |
| | | var err error |
| | | var flag int |
| | | |
| | | err = goffmpeg.InitFFmpeg(soFile) |
| | | if err != nil { |
| | |
| | | |
| | | reterr := fmt.Errorf("gb28181 try %d times to capture image, is url correct?", maxTry) |
| | | // for i := 0; i < maxTry; i++ { |
| | | ret, flag = goffmpeg.GetGBJpg(url, maxTry) |
| | | if flag <= 0 { |
| | | reterr = fmt.Errorf("gb28181 GetGBJpg failed %d", flag) |
| | | ret = goffmpeg.GetGBJpg(url, maxTry) |
| | | if len(ret) > 0 { |
| | | reterr = nil |
| | | // break |
| | | } |
| | | // } |
| | | |
| | | goffmpeg.FreeFFmpeg() |
| | | |
| | |
| | | gf.BuildDecoder() |
| | | |
| | | tryTime := 0 |
| | | interval := 40 // ms |
| | | // 保证有一个关键帧 |
| | | maxTry *= 1000 |
| | | maxTry = maxTry * 1000 |
| | | |
| | | var bgrData, jpgData []byte |
| | | var err error |
| | |
| | | } |
| | | break |
| | | } else { |
| | | tryTime += interval |
| | | tryTime += 40 |
| | | if tryTime > maxTry { |
| | | break |
| | | } |
| | | time.Sleep(time.Duration(interval) * time.Millisecond) |
| | | time.Sleep(40 * time.Millisecond) |
| | | } |
| | | } |
| | | |
| | | if tryTime >= maxTry { |
| | | err := fmt.Sprintf("try %d ms to capture image, is url correct?\n", tryTime) |
| | | err := fmt.Sprintf("try %d times to capture image, is url correct?\n", tryTime) |
| | | return nil, errors.New(err) |
| | | } |
| | | |