十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容主要讲解“如何通过C++编译WebRTC视频播放几秒后画面卡住排查分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何通过C++编译WebRTC视频播放几秒后画面卡住排查分析”吧!
创新互联是一家专业提供扎囊企业网站建设,专注与成都网站设计、网站制作、H5场景定制、小程序制作等业务。10年已为扎囊众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
在编译WebRTC过程中,我们上一篇解决了c++编译WEBRTC视频播放项目获取sdp会话描述失败的问题,在解决这个问题之后,重新建立SDP会话描述之后,视频添加成功,但是实际播放的时候画面会卡住。
测试C++ WebRTC播放时,在播放大约4~6s后,画面会停止播放,一直卡在最后一帧画面。报错如下: (video_receive_stream.cc:659): No decodable frame in 3000 ms, requesting keyframe.
该报错的意思是播放画面一段时间,3000毫秒内没有可解码帧,因此请求关键帧失败。
我们需要在代码中检查以下打印的几个文件是否都存在:
可以看到打印的信息文件基本找到。
问题出现的原因是H264解码无法获取到sps和pps信息,导致无法进行解码。一般摄像头发H264的关键帧会每隔1s有个I帧,这样会防止画面不连续。但是在WebRTC使用摄像头连接请求,不会主动拿到关键帧,而是需要通过代码实现来请求关键帧,让WebRTC知道。
因此,此处的修复关键就在于在WebRTC请求关键帧时,先清除里面的缓存数据(RemovePacketsUntilKeyFrame函数),然后再请求关键帧(RequestKeyFrame函数)。
到此,相信大家对“如何通过C++编译WebRTC视频播放几秒后画面卡住排查分析”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!