EasyGBS的部分项目现场是具有摄像头直播流量统计功能的,在某项目中,我们发现EasyGBS通道直播正常的情况下;所有摄像头的直播流量上下行均为零后发现公网也存在此问题。
此问题仅出现在EasyGBS的新内核版本里,因此判断为新内核版本EasyGBS该功能并未实现。查看功能模块代码发现老版本内核的流量统计,是由Go后端定时访问nginx的获取流量统计接口得到数据,新内核丢弃了nginx,这也证实了该功能确实未实现。
resp, err := client.Get(fmt.Sprintf(“http://127.0.0.1:%d/getlivesessions”, GetHTTPPort()))
根据新内核官方API文档,发现新内核也拥有流量统计接口暴露,因此可以通过此接口获取到对应通道的上下行流量信息。
Golang json格式展示:
type AllGroup struct {
ErrorCode int `json:"error_code"`
Desp string `json:"desp"`
Data struct {
Groups []struct {
StreamName string `json:"stream_name"`
AudioCodec string `json:"audio_codec"`
VideoCodec string `json:"video_codec"`
VideoWidth int `json:"video_width"`
VideoHeight int `json:"video_height"`
Pub struct {
Protocol string `json:"protocol"`
SessionId string `json:"session_id"`
RemoteAddr string `json:"remote_addr"`
StartTime string `json:"start_time"`
ReadBytesSum int64 `json:"read_bytes_sum"`
WroteBytesSum int64 `json:"wrote_bytes_sum"`
Bitrate int `json:"bitrate"`
ReadBitrate int `json:"read_bitrate"`
WriteBitrate int `json:"write_bitrate"`
} `json:"pub"`
Subs []struct {
Protocol string `json:"protocol"`
SessionId string `json:"session_id"`
RemoteAddr string `json:"remote_addr"`
StartTime string `json:"start_time"`
ReadBytesSum int64 `json:"read_bytes_sum"`
WroteBytesSum int64 `json:"wrote_bytes_sum"`
Bitrate int `json:"bitrate"`
ReadBitrate int `json:"read_bitrate"`
WriteBitrate int `json:"write_bitrate"`
} `json:"subs"`
Pull struct {
Protocol string `json:"protocol"`
SessionId string `json:"session_id"`
RemoteAddr string `json:"remote_addr"`
StartTime string `json:"start_time"`
ReadBytesSum int64 `json:"read_bytes_sum"`
WroteBytesSum int64 `json:"wrote_bytes_sum"`
Bitrate int `json:"bitrate"`
ReadBitrate int `json:"read_bitrate"`
WriteBitrate int `json:"write_bitrate"`
} `json:"pull"`
} `json:"groups"`
} `json:"data"`
}