func main() { log.Println(os.Args) flag.Usage = func() { flag.PrintDefaults() } flag.Parse() if *showHelp { flag.PrintDefaults() os.Exit(0) } if *streamNameCode == "" { flag.PrintDefaults() log.Fatal("specify the stream name") } inputFs = getInputFs() l := rtmpLog.NewLogger("", "", nil, 60, 3600*24, true) rtmp.InitLogger(l) defer l.Close() createStreamChan = make(chan rtmp.OutboundStream) connHandler := &ConnHandler{} log.Println("Dialing") var err error obConn, err = rtmp.Dial(*url, connHandler, 100) if err != nil { log.Fatal("Dial error", err) } defer obConn.Close() log.Println("Connecting") err = obConn.Connect() if err != nil { log.Fatalf("Connect error: %s", err.Error()) } for { select { case stream := <-createStreamChan: stream.Attach(connHandler) err = stream.Publish(*streamNameCode, "live") if err != nil { log.Fatalf("Publish error: %s", err.Error()) } case <-time.After(5 * time.Second): log.Printf("Audio size: %d bytes; Vedio size: %d bytes; Current tag index: %d\n", audioDataSize, videoDataSize, input.curPos) } } }
func main() { flag.Usage = func() { fmt.Fprintf(os.Stderr, "%s version[%s]\r\nUsage: %s [OPTIONS]\r\n", programName, version, os.Args[0]) flag.PrintDefaults() } flag.Parse() l := log.NewLogger(".", "publisher", nil, 60, 3600*24, true) rtmp.InitLogger(l) defer l.Close() createStreamChan = make(chan rtmp.OutboundStream) testHandler := &TestOutboundConnHandler{} fmt.Println("to dial") var err error obConn, err = rtmp.Dial(*url, testHandler, 100) if err != nil { fmt.Println("Dial error", err) os.Exit(-1) } defer obConn.Close() fmt.Println("to connect") err = obConn.Connect() if err != nil { fmt.Printf("Connect error: %s", err.Error()) os.Exit(-1) } for { select { case stream := <-createStreamChan: // Publish stream.Attach(testHandler) err = stream.Publish(*streamName, "live") if err != nil { fmt.Printf("Publish error: %s", err.Error()) os.Exit(-1) } case <-time.After(1 * time.Second): fmt.Printf("Audio size: %d bytes; Vedio size: %d bytes\n", audioDataSize, videoDataSize) } } }
func main() { flag.Usage = func() { fmt.Fprintf(os.Stderr, "%s version[%s]\r\nUsage: %s [OPTIONS]\r\n", programName, version, os.Args[0]) flag.PrintDefaults() } flag.Parse() l := log.NewLogger(".", "player", nil, 60, 3600*24, true) rtmp.InitLogger(l) defer l.Close() // Create flv file if len(*dumpFlv) > 0 { var err error flvFile, err = flv.CreateFile(*dumpFlv) if err != nil { fmt.Println("Create FLV dump file error:", err) return } } defer func() { if flvFile != nil { flvFile.Close() } }() createStreamChan = make(chan rtmp.OutboundStream) testHandler := &TestOutboundConnHandler{} fmt.Println("to dial") var err error obConn, err = rtmp.Dial(*url, testHandler, 100) /* conn := TryHandshakeByVLC() obConn, err = rtmp.NewOutbounConn(conn, *url, testHandler, 100) */ if err != nil { fmt.Println("Dial error", err) os.Exit(-1) } defer obConn.Close() fmt.Printf("obConn: %+v\n", obConn) fmt.Printf("obConn.URL(): %s\n", obConn.URL()) fmt.Println("to connect") // err = obConn.Connect("33abf6e996f80e888b33ef0ea3a32bfd", "131228035", "161114738", "play", "", "", "1368083579") err = obConn.Connect() if err != nil { fmt.Printf("Connect error: %s", err.Error()) os.Exit(-1) } for { select { case stream := <-createStreamChan: // Play err = stream.Play(*streamName, nil, nil, nil) if err != nil { fmt.Printf("Play error: %s", err.Error()) os.Exit(-1) } // Set Buffer Length case <-time.After(1 * time.Second): fmt.Printf("Audio size: %d bytes; Vedio size: %d bytes\n", audioDataSize, videoDataSize) } } }