ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

国标GB28181视频平台推送音视频复合流,播放视频黑屏是什么原因?

2021-04-25 15:52:15  阅读:183  来源: 互联网

标签:视频 播放 音频 音视频 av 格式 AUDIO 黑屏


TSINGSEE视频研发的全线视频流媒体云服务产品都是可以播放音视频复合流的,但是近期TSINGSEE青犀视频在EasyGBS进行摄像头复合流推送的时候,有些摄像头推送过来的音视频复合流有问题,导致播放视频的时候会出现黑屏现象。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

经过排查,我们发现是设备音频的问题。做语音对讲的时候,摄像头只能识别g711a格式的音频,所以发送过去的音频必须要是g711a格式,但是EasyGBS只能播放aac格式的音频,所以就在摄像头发送过来g711a格式音频的时候转成了aac格式,而转换过后的音频用现有的播放器播放的时候就会出现间歇的黑屏了。

所以当设备注册上来,系统识别推送的是音视频复合流的时候,我们建立了一个选择丢弃音频的开关,这样就可以通过平台就禁用格式不支持的音频,而不需要在用户摄像机后台关闭音频。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

我们设置了设备接入的时候默认禁用音频的按钮,然后在摄像机推流播放的时候识别是否是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,
	}

如果音频是平台所支持的格式类型,则可以正常播放,如果平台不支持,就会自动丢弃音频。这样就不会因为格式不兼容而出现黑屏无法播放的问题。

GBS4.png

标签:视频,播放,音频,音视频,av,格式,AUDIO,黑屏
来源: https://blog.51cto.com/u_15179958/2731763

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有