Increase RTMP client compatibility

This commit is contained in:
Ingo Oppermann 2022-09-14 14:49:03 +02:00
parent f752080f4a
commit 6c0f2974f0
2 changed files with 30 additions and 3 deletions

View File

@ -69,6 +69,9 @@ func (s *server) log(who, action, path, message string, client net.Addr) {
} }
func (s *server) handlePlay(conn *rtmp.Conn) { func (s *server) handlePlay(conn *rtmp.Conn) {
client := conn.NetConn().RemoteAddr()
s.log("PLAY", "INVALID", conn.URL.Path, "not supported", client)
conn.Close() conn.Close()
} }
@ -108,15 +111,23 @@ func main() {
var cert string var cert string
var key string var key string
var help bool var help bool
var addr string
var app string
var token string
flag.StringVar(&cert, "cert", "", "Path to the certifacate file") flag.StringVar(&cert, "cert", "", "Path to the certifacate file")
flag.StringVar(&key, "key", "", "Path to the key 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.BoolVar(&help, "h", false, "Show options")
flag.Parse() flag.Parse()
config := Config{ config := Config{
Addr: ":1935", Addr: addr,
App: app,
Token: token,
} }
server, _ := New(config) server, _ := New(config)

View File

@ -426,8 +426,14 @@ var CodecTypes = flv.CodecTypes
func (self *Conn) writeBasicConf() (err error) { func (self *Conn) writeBasicConf() (err error) {
// > SetChunkSize // > SetChunkSize
if err = self.writeSetChunkSize(1024 * 1024 * 128); err != nil { if self.isserver {
return if err = self.writeSetChunkSize(self.readMaxChunkSize); err != nil {
return
}
} else {
if err = self.writeSetChunkSize(1024 * 1024 * 1); err != nil {
return
}
} }
// > WindowAckSize // > WindowAckSize
if err = self.writeWindowAckSize(1024 * 1024 * 3); err != nil { if err = self.writeWindowAckSize(1024 * 1024 * 3); err != nil {
@ -471,12 +477,17 @@ func (self *Conn) readConnect() (err error) {
if ok { if ok {
tcurl, _ = _tcurl.(string) tcurl, _ = _tcurl.(string)
} }
connectparams := self.commandobj connectparams := self.commandobj
if err = self.writeBasicConf(); err != nil { if err = self.writeBasicConf(); err != nil {
return return
} }
if err = self.flushWrite(); err != nil {
return
}
// > _result("NetConnection.Connect.Success") // > _result("NetConnection.Connect.Success")
if err = self.writeCommandMsg(3, 0, "_result", self.commandtransid, if err = self.writeCommandMsg(3, 0, "_result", self.commandtransid,
flvio.AMFMap{ flvio.AMFMap{
@ -1180,6 +1191,7 @@ func (self *Conn) fillChunkHeader(b []byte, csid uint32, timestamp int32, msgtyp
if Debug { if Debug {
fmt.Printf("rtmp: write chunk msgdatalen=%d msgsid=%d\n", msgdatalen, msgsid) fmt.Printf("rtmp: write chunk msgdatalen=%d msgsid=%d\n", msgdatalen, msgsid)
fmt.Print(hex.Dump(b[:msgdatalen]))
} }
return return
@ -1568,6 +1580,10 @@ func (self *Conn) handleMsg(timestamp uint32, msgsid uint32, msgtypeid uint8, ms
} }
self.readAckSize = pio.U32BE(self.msgdata) self.readAckSize = pio.U32BE(self.msgdata)
return return
default:
if Debug {
fmt.Printf("rtmp: unhandled msg: %d\n", msgtypeid)
}
} }
self.gotmsg = true self.gotmsg = true