mirror of
https://github.com/lkmio/lkm.git
synced 2025-09-26 19:21:14 +08:00
refactor: rtsp和gb28181不单独声明媒体端口, 强制udp和tcp全开
This commit is contained in:
12
api_gb.go
12
api_gb.go
@@ -72,18 +72,6 @@ func (api *ApiServer) OnGBSourceCreate(v *SourceSDP, w http.ResponseWriter, r *h
|
||||
//udp收流
|
||||
}
|
||||
|
||||
if tcp && active {
|
||||
if !tcp {
|
||||
err = fmt.Errorf("UDP不能主动拉流")
|
||||
} else if !stream.AppConfig.GB28181.IsEnableTCP() {
|
||||
err = fmt.Errorf("未开启TCP收流服务,UDP不能主动拉流")
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var ssrc string
|
||||
if v.SessionName == InviteTypeDownload || v.SessionName == InviteTypePlayback {
|
||||
ssrc = gb28181.GetVodSSRC()
|
||||
|
10
config.json
10
config.json
@@ -7,6 +7,7 @@
|
||||
"idle_timeout": 60,
|
||||
"receive_timeout":60,
|
||||
"debug": false,
|
||||
"media_port": [50000,60000],
|
||||
|
||||
"http": {
|
||||
"port": 8080
|
||||
@@ -26,9 +27,8 @@
|
||||
|
||||
"rtsp": {
|
||||
"enable": true,
|
||||
"port": [554,20000,30000],
|
||||
"password": "123456",
|
||||
"transport": "UDP|TCP"
|
||||
"port": 554,
|
||||
"password": "123456"
|
||||
},
|
||||
|
||||
"webrtc": {
|
||||
@@ -38,9 +38,7 @@
|
||||
},
|
||||
|
||||
"gb28181": {
|
||||
"enable": true,
|
||||
"port": [50000,60000],
|
||||
"transport": "UDP|TCP"
|
||||
"enable": true
|
||||
},
|
||||
|
||||
"jt1078": {
|
||||
|
@@ -276,16 +276,6 @@ func (source *BaseGBSource) SetTransport(transport transport.Transport) {
|
||||
|
||||
// NewGBSource 创建国标推流源, 返回监听的收流端口
|
||||
func NewGBSource(id string, ssrc uint32, tcp bool, active bool) (GBSource, int, error) {
|
||||
if tcp {
|
||||
utils.Assert(stream.AppConfig.GB28181.IsEnableTCP())
|
||||
} else {
|
||||
utils.Assert(stream.AppConfig.GB28181.IsEnableUDP())
|
||||
}
|
||||
|
||||
if active {
|
||||
utils.Assert(tcp && stream.AppConfig.GB28181.IsEnableTCP())
|
||||
}
|
||||
|
||||
var transportServer transport.Transport
|
||||
var source GBSource
|
||||
var port int
|
||||
|
12
main.go
12
main.go
@@ -75,12 +75,10 @@ func init() {
|
||||
// 初始化日志
|
||||
log.InitLogger(config.Log.FileLogging, zapcore.Level(stream.AppConfig.Log.Level), stream.AppConfig.Log.Name, stream.AppConfig.Log.MaxSize, stream.AppConfig.Log.MaxBackup, stream.AppConfig.Log.MaxAge, stream.AppConfig.Log.Compress)
|
||||
|
||||
if stream.AppConfig.GB28181.Enable {
|
||||
gb28181.TransportManger = transport.NewTransportManager(config.ListenIP, uint16(stream.AppConfig.GB28181.Port[0]), uint16(stream.AppConfig.GB28181.Port[1]))
|
||||
}
|
||||
|
||||
if stream.AppConfig.Rtsp.Enable {
|
||||
rtsp.TransportManger = transport.NewTransportManager(config.ListenIP, uint16(stream.AppConfig.Rtsp.Port[1]), uint16(stream.AppConfig.Rtsp.Port[2]))
|
||||
if stream.AppConfig.GB28181.Enable || stream.AppConfig.Rtsp.Enable {
|
||||
transportManager := transport.NewTransportManager(config.ListenIP, uint16(stream.AppConfig.MediaPort[0]), uint16(stream.AppConfig.MediaPort[1]))
|
||||
gb28181.TransportManger = transportManager
|
||||
rtsp.TransportManger = transportManager
|
||||
}
|
||||
|
||||
// 创建dump目录
|
||||
@@ -112,7 +110,7 @@ func main() {
|
||||
}
|
||||
|
||||
if stream.AppConfig.Rtsp.Enable {
|
||||
rtspAddr, err := net.ResolveTCPAddr("tcp", stream.ListenAddr(stream.AppConfig.Rtsp.Port[0]))
|
||||
rtspAddr, err := net.ResolveTCPAddr("tcp", stream.ListenAddr(stream.AppConfig.Rtsp.Port))
|
||||
if err != nil {
|
||||
panic(rtspAddr)
|
||||
}
|
||||
|
@@ -77,10 +77,8 @@ type JT1078Config struct {
|
||||
}
|
||||
|
||||
type RtspConfig struct {
|
||||
TransportConfig
|
||||
|
||||
enableConfig
|
||||
Port []int `json:"port"`
|
||||
Port int `json:"port"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
@@ -106,8 +104,6 @@ type HttpConfig struct {
|
||||
|
||||
type GB28181Config struct {
|
||||
enableConfig
|
||||
TransportConfig
|
||||
Port []int `json:"port"`
|
||||
}
|
||||
|
||||
type WebRtcConfig struct {
|
||||
@@ -207,7 +203,7 @@ func GetStreamPlayUrls(source string) []string {
|
||||
|
||||
if AppConfig.Rtsp.Enable {
|
||||
// 不拼接userinfo
|
||||
urls = append(urls, fmt.Sprintf("rtsp://%s:%d/%s", AppConfig.PublicIP, AppConfig.Rtsp.Port[0], source))
|
||||
urls = append(urls, fmt.Sprintf("rtsp://%s:%d/%s", AppConfig.PublicIP, AppConfig.Rtsp.Port, source))
|
||||
}
|
||||
|
||||
//if AppConfig.Http.Enable {
|
||||
@@ -265,6 +261,7 @@ type AppConfig_ struct {
|
||||
IdleTimeout int64 `json:"idle_timeout"` // 多长时间(单位秒)没有拉流. 如果开启hook通知, 根据hook响应, 决定是否关闭Source(200-不关闭/非200关闭). 否则会直接关闭Source.
|
||||
ReceiveTimeout int64 `json:"receive_timeout"` // 多长时间(单位秒)没有收到流. 如果开启hook通知, 根据hook响应, 决定是否关闭Source(200-不关闭/非200关闭). 否则会直接关闭Source.
|
||||
Debug bool `json:"debug"` // debug模式, 开启将保存推流
|
||||
MediaPort []int `json:"media_port"` // 媒体端口范围
|
||||
|
||||
//缓存指定时长的包,满了之后才发送给Sink. 可以降低用户态和内核态的交互频率,大幅提升性能.
|
||||
//合并写的大小范围,应当大于一帧的时长,不超过一组GOP的时长,在实际发送流的时候也会遵循此条例.
|
||||
|
Reference in New Issue
Block a user