经常使用EasyNVR产品的用户都知道,作为音视频行业互联网直播产品,EasyNVR主要功能在于通过RTSP/ONVIF协议,接入前端音视频采集设备,通过EasyNVR软硬件产品将拉取过来的音视频流转化给适合全平台播放的RTMP、HTTP-FLV、HLS格式,极大的方便用户进行网页直播、微信直播及接入自身业务平台。
在测试期间,EasyNVR出现日志显示为数字的一段,无法看出是什么问题。
查看对应的代码为:
log.Printf("handle message failed, %v", p)
log.Println(debug.Stack())
其中 debug.Stack() 返回数据如下:
// Stack returns a formatted stack trace of the goroutine that calls it.
// It calls runtime.Stack with a large enough buffer to capture the entire trace.
func Stack() []byte {
buf := make([]byte, 1024)
for {
n := runtime.Stack(buf, false)
if n < len(buf) {
return buf[:n]
}
buf = make([]byte, 2*len(buf))
}
}
从代码中我们可以得知最终返回的数据是 []byte 类型,因此出现以上问题。
修改代码如下:
if p := recover(); p != nil {
log.Printf("handle message failed, %v", p)
log.Printf("debug stack : %v", string(debug.Stack()))
}
以上代码将返回的 []byte 转换为 string 类型,写入到日志中,即可解决该问题。
EasyNVR可以说已经成为国内视频互联网化基础建设的排头兵,几乎各个民生行业都已经有了EasyNVR视频能力输出的身影,EasyNVR多年服务于各行各业视频基础建设,EasyNVR的可靠性、完整性、稳定性已经受到了业界的广泛认可。同时为方便用户了解和使用EasyNVR,我们提供EasyNVR的试用版本,解压即用,欢迎测试。