1、定位:首先就是定位是否有流,将dev port的frame写文件,conference port的frame写文件,stream port的frame写文件。发现从stream port开始,frame就是空的了。(写文件的位置一般都在相应port的put_frame实现中,因为是编码方向的流)
2、调试:检查port连接是否异常,发现port一开始连接正常,但是中途发生了media channel update,stream被destroy然后重新create,start,这个时候stream port本应和conference port重新连接起来的但是发现并没有,这一步产生两个疑点:首先为什么会发生media channel update且codec param协商失败?这是因为stream create会置 code param的vad参数为0,stream port的put_frame中才会真正使能这个参数(但是需要过一段时间,这个时间由PJMEDIA_STREAM_VAD_SUSPEND_MSEC来控制,具体可参考pjsip中的注释),由于update到来的时,这个参数还没有使能,因此media update channel时codec param参数协商失败。其次为什么stream destroy然后再creat,start,stream port就没有和conference port连接了?这是因为前面的人修改了on_call_audio_state的实现,在连接conference port和stream port前加了判断,call state是confirm状态就不连接,所以才会出现通话中channel update时重启stream会导致stream中没有流。
3、解决:三个方案选其一
channel update时不比较codec的vad参数
将PJMEDIA_STREAM_VAD_SUSPEND_MSEC改小,保证update前codec的vad参数已经修改过来
将on_call_audio_state中连接port前的判断去掉
记一次pjsip通话没声音的调试过程
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 文章目录 1. Still and Video Media Capture - 静态视频媒体捕获。1.1. Use...
- Still and Video Media Capture - 静态视频媒体捕获。 To manage the c...
- 在上一篇笔记中我们已经完成了使用SDL播放声音和视频,声音播放没有什么问题,而视频播放太快,很明显视频没有同步。在...