前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过C++编译WebRTC视频播放几秒后画面卡住排查分析

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

原创
作者头像
TSINGSEE青犀视频
修改2021-04-15 17:45:04
1.1K0
修改2021-04-15 17:45:04
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

在编译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函数)。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档