Increase RTMP client compatibility
This commit is contained in:
parent
f752080f4a
commit
6c0f2974f0
@ -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)
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user