前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浏览器播放EasyCVR视频广场通道推送音频失败排查及优化

浏览器播放EasyCVR视频广场通道推送音频失败排查及优化

原创
作者头像
TSINGSEE青犀视频
修改2021-07-14 16:48:39
7900
修改2021-07-14 16:48:39
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

海康SDK/Ehome/RTSP/GB28181协议安防视频云服务EasyCVR能够通过GB28181协议进行级联,假如摄像头或设备支持音频的话,EasyCVR同样也能够进行音频采集。

EasyCVR添加一个本地流通道,把音频勾选上,在浏览器视频广场播放,浏览器一直出现相同错误,并没有声音输出:“[MSEController] > Failed to execute ‘appendBuffer’ on ‘SourceBuffer’: The HTMLMediaElement.error attribute is not null.”

浏览器启动播放流程序,打印的信息如下:

里面有个RTMP流,这个是往nginx服务端进行推送的流,把原始的RTMP流使用VLC进行播放,出现信息:

此H264视频是可以进行解析的,但是aac音频解析不出来,才导致无法播放。

使用c++ EasyStreamClient程序,通过修改指令参数,把RTSP往nginx服务端上推流,在使用VLC进行播放,可以出现声音。所以只能分析GO的业务层代码的问题,并对比差异。

分析c++ EasyStreamClient代码是先各种初始化EasyStreamClient,并设置回调函数;在回调函数中设置EasyRTMP推流参数:EasyRTMP_InitMetadata

而GO业务层都是会先初始化好,向EasyRTMP_InitMetadata填写默认参数,导致里面参数不正确,声音推送错误:

解决此问题,则需要打开流信息,获取到mediainfo的时候把参数设置到EasyRTMP推流中去。修改代码要修改二处:

1、把原来的初始化EasyRTMP_InitMetadata默认参数这个参数注释获取删除:

2、对外暴露一个方法来设置EasyRTMP_InitMetadata函数参数,然后在EasyStreamClient回调函数之后调用:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档