diff --git a/examples/rtmp_publish_sink/main.go b/examples/rtmp_publish_sink/main.go index 895ae2d..bf248e1 100644 --- a/examples/rtmp_publish_sink/main.go +++ b/examples/rtmp_publish_sink/main.go @@ -69,6 +69,9 @@ func (s *server) log(who, action, path, message string, client net.Addr) { } func (s *server) handlePlay(conn *rtmp.Conn) { + client := conn.NetConn().RemoteAddr() + + s.log("PLAY", "INVALID", conn.URL.Path, "not supported", client) conn.Close() } @@ -108,15 +111,23 @@ func main() { var cert string var key string var help bool + var addr string + var app string + var token string flag.StringVar(&cert, "cert", "", "Path to the certifacate file") flag.StringVar(&key, "key", "", "Path to the key file") + flag.StringVar(&addr, "addr", ":1935", "Address to listen on") + flag.StringVar(&app, "app", "/", "RTMP app, should start with /") + flag.StringVar(&token, "token", "", "Token query string") flag.BoolVar(&help, "h", false, "Show options") flag.Parse() config := Config{ - Addr: ":1935", + Addr: addr, + App: app, + Token: token, } server, _ := New(config) diff --git a/format/rtmp/rtmp.go b/format/rtmp/rtmp.go index 3ea6b7d..3f0f01a 100644 --- a/format/rtmp/rtmp.go +++ b/format/rtmp/rtmp.go @@ -426,8 +426,14 @@ var CodecTypes = flv.CodecTypes func (self *Conn) writeBasicConf() (err error) { // > SetChunkSize - if err = self.writeSetChunkSize(1024 * 1024 * 128); err != nil { - return + if self.isserver { + if err = self.writeSetChunkSize(self.readMaxChunkSize); err != nil { + return + } + } else { + if err = self.writeSetChunkSize(1024 * 1024 * 1); err != nil { + return + } } // > WindowAckSize if err = self.writeWindowAckSize(1024 * 1024 * 3); err != nil { @@ -471,12 +477,17 @@ func (self *Conn) readConnect() (err error) { if ok { tcurl, _ = _tcurl.(string) } + connectparams := self.commandobj if err = self.writeBasicConf(); err != nil { return } + if err = self.flushWrite(); err != nil { + return + } + // > _result("NetConnection.Connect.Success") if err = self.writeCommandMsg(3, 0, "_result", self.commandtransid, flvio.AMFMap{ @@ -1180,6 +1191,7 @@ func (self *Conn) fillChunkHeader(b []byte, csid uint32, timestamp int32, msgtyp if Debug { fmt.Printf("rtmp: write chunk msgdatalen=%d msgsid=%d\n", msgdatalen, msgsid) + fmt.Print(hex.Dump(b[:msgdatalen])) } return @@ -1568,6 +1580,10 @@ func (self *Conn) handleMsg(timestamp uint32, msgsid uint32, msgtypeid uint8, ms } self.readAckSize = pio.U32BE(self.msgdata) return + default: + if Debug { + fmt.Printf("rtmp: unhandled msg: %d\n", msgtypeid) + } } self.gotmsg = true