温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++编译WebRTC视频播放几秒后画面卡住怎么排查分析

发布时间:2022-04-13 16:31:44 来源:亿速云 阅读:583 作者:iii 栏目:编程语言

这篇文章主要介绍“C++编译WebRTC视频播放几秒后画面卡住怎么排查分析”,在日常操作中,相信很多人在C++编译WebRTC视频播放几秒后画面卡住怎么排查分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++编译WebRTC视频播放几秒后画面卡住怎么排查分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在编译WebRTC过程中,我们上一篇解决了c++编译WEBRTC视频播放项目获取sdp会话描述失败的问题,在解决这个问题之后,重新建立SDP会话描述之后,视频添加成功,但是实际播放的时候画面会卡住。

测试C++ WebRTC播放时,在播放大约4~6s后,画面会停止播放,一直卡在最后一帧画面。报错如下: (video_receive_stream.cc:659): No decodable frame in 3000 ms, requesting keyframe.

C++编译WebRTC视频播放几秒后画面卡住怎么排查分析

该报错的意思是播放画面一段时间,3000毫秒内没有可解码帧,因此请求关键帧失败。

我们需要在代码中检查以下打印的几个文件是否都存在:

C++编译WebRTC视频播放几秒后画面卡住怎么排查分析

C++编译WebRTC视频播放几秒后画面卡住怎么排查分析

C++编译WebRTC视频播放几秒后画面卡住怎么排查分析

可以看到打印的信息文件基本找到。

问题出现的原因是H264解码无法获取到sps和pps信息,导致无法进行解码。一般摄像头发H264的关键帧会每隔1s有个I帧,这样会防止画面不连续。但是在WebRTC使用摄像头连接请求,不会主动拿到关键帧,而是需要通过代码实现来请求关键帧,让WebRTC知道。

因此,此处的修复关键就在于在WebRTC请求关键帧时,先清除里面的缓存数据(RemovePacketsUntilKeyFrame函数),然后再请求关键帧(RequestKeyFrame函数)。

C++编译WebRTC视频播放几秒后画面卡住怎么排查分析

到此,关于“C++编译WebRTC视频播放几秒后画面卡住怎么排查分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI