国标GB28181协议国标平台EasyGBS视频平台推送音视频复合流,播放视频黑屏是什么原因?
程序员文章站
2022-07-06 10:50:55
...
我们知道TSINGSEE青犀视频研发的全线视频流媒体云服务产品都是可以播放音视频复合流的,但是近期TSINGSEE青犀视频在EasyGBS进行摄像头复合流推送的时候,有些摄像头推送过来的音视频复合流有问题,导致播放视频的时候会出现黑屏现象。
经过排查,我们发现是设备音频的问题。做语音对讲的时候,摄像头只能识别g711a格式的音频,所以发送过去的音频必须要是g711a格式。但是EasyGBS只能播放aac格式的音频,所以就在摄像头发送过来g711a格式音频的时候转成了aac格式,而转换过后的音频用现有的播放器播放的时候就会出现间歇的黑屏了。
所以当设备注册上来,系统识别推送的是音视频复合流的时候,我们建立了一个选择丢弃音频的开关,这样就可以通过平台就禁用格式不支持的音频,而不需要在用户摄像机后台关闭音频。
我们设置了设备接入的时候默认禁用音频的按钮,然后在摄像机推流播放的时候识别是否是EasyGBS支持的格式,来判断是否丢弃音频。具体实现如下:
case av.AUDIO_CODEC_G711A:
//目前支持G711A格式音频
avf.Flag = av.FRAME_FLAG_AUDIO
if !msess.Audio {
return
}
case av.AUDIO_CODEC_AAC:
//目前只支持AAC格式音频
avf.Flag = av.FRAME_FLAG_AUDIO
// if msess.MediaInfo != nil && msess.MediaInfo.AudioCodec == av.AUDIO_CODEC_AAC {
// avf.Flag = av.FRAME_FLAG_AUDIO
// } else {
// err = fmt.Errorf("audio aac not support push to rtmp as media info not found")
// }
if !msess.Audio {
return
}
channel := &models.Channel{}
if len(streamidarr) == 4 {
temp := models.GetChannel(streamidarr[2], streamidarr[1])
if temp != nil {
channel = temp
}
}
mediaSession := &MediaSession{
StreamID: streamid,
CDN: c.Req.HeaderMap["CDN"],
MediaTransport: transport,
Subject: subject,
SIPSession: sipSession,
UseOriginalTS: false,
DumpStream: false,
MaxQueueSize: 300,
IdleTimeoutSeconds: int(cfg.RtpIdleTimeOut),
LatestGetFrameTime: time.Now(),
LatestHandleRTPTime: time.Now(),
Queue: make([]*rtp.RTPInfo, 0),
QueueCond: sync.NewCond(&sync.Mutex{}),
Quit: make(chan bool),
Audio: channel.Audio,
}
如果音频是平台所支持的格式类型,则可以正常播放,如果平台不支持,就会自动丢弃音频。这样就不会因为格式不兼容而出现黑屏无法播放的问题。
上一篇: Elasticsearch 常用运维命令(持续更新)
下一篇: Hive 动态分区
推荐阅读
-
国标GB28181协议视频流媒体平台EasyGBS更新通道后音频被关闭是什么原因?
-
国标GB28181协议国标平台EasyGBS视频平台推送音视频复合流,播放视频黑屏是什么原因?
-
国标GB28181协议客户端EasyGBS视频平台更新后界面出现滚动条是什么原因导致的?
-
国标GB28181协议视频平台EasyGBS设备离线无法查看云端录像是什么原因?
-
国标GB28181协议视频平台EasyGBS级联上级平台时间戳为0是什么原因?
-
国标GB28181协议国标视频平台EasyGBS修改云端录像不起效是什么原因?
-
IP网络摄像头国标GB28181协议国标视频平台EasyGBS视频流RTSP,地址在VLC无法播放是什么原因?
-
国标GB28181协议IP摄像头/录像机接入视频平台EasyGBS出现告警信息,但是不上报是什么原因?
-
国标GB28181协议IP摄像头/录像机接入视频平台EasyGBS出现告警信息,但是不上报是什么原因?