package main
|
|
import (
|
"context"
|
"decoder/demo"
|
"decoder/valib/ipc"
|
"encoding/json"
|
"flag"
|
"fmt"
|
// "videoServer/demo"
|
)
|
|
var (
|
streamURL string
|
picFolder string
|
|
ipcURL string
|
proc string
|
)
|
|
func init() {
|
flag.StringVar(&streamURL, "i", "rtsp://192.168.1.203:8554/16.mkv", "input url")
|
flag.StringVar(&picFolder, "f", ".", "test pic folder")
|
|
flag.StringVar(&ipcURL, "ipc", "ipc:///tmp/pic.ipc", "ipc label")
|
}
|
|
// CameraInfo camera info
|
type CameraInfo struct {
|
ID string `json:"Cameraid"`
|
URL string `json:"Rtsp"`
|
}
|
|
// MsgIPC msg for ipc
|
type MsgIPC struct {
|
CMD string `json:"Command"`
|
Port int `jsong:"PortIpc"`
|
}
|
|
var (
|
mapCI = make(map[string]CameraInfo)
|
port = 7001
|
)
|
|
func recvFromIPC(ctx context.Context, url string, ch chan<- CameraInfo) {
|
ipc := ipc.NewClient(ctx, url)
|
|
for {
|
msg := ipc.Recv()
|
if msg != nil {
|
fmt.Println(string(msg))
|
var c CameraInfo
|
if err := json.Unmarshal(msg, &c); err == nil {
|
ch <- c
|
fmt.Printf("recv camere info %+v\n", c)
|
} else {
|
fmt.Println(err)
|
}
|
msgIpc := MsgIPC{"new decoder", port}
|
if b, err := json.Marshal(msgIpc); err == nil {
|
ipc.Send(b)
|
}
|
}
|
}
|
}
|
|
func main() {
|
flag.Parse()
|
|
test()
|
|
// ctx, cancel := context.WithCancel(context.Background())
|
|
// 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)
|
|
// url := strings.TrimSpace(c.URL)
|
// id := strings.TrimSpace(c.ID)
|
// i := strings.TrimSpace(ipc)
|
// go demo.SendByIPC(url, id, i)
|
// }
|
// }
|
// }
|
// cancel()
|
|
}
|
|
func test() {
|
fmt.Println("start test")
|
|
fmt.Println(picFolder)
|
|
demo.SendByIPC(streamURL, "camera1", ipcURL, true)
|
}
|