美文网首页工作生活
断点调试用于确定APP端的码流是否正常

断点调试用于确定APP端的码流是否正常

作者: 可问春风渡江陵 | 来源:发表于2019-07-02 10:18 被阅读0次

    最近做的sip对讲项目,在接听时出现了视频卡顿的问题,为了排查这个问题的原因,首先想到的码流本身是否有问题还是传输到APP之后解码播放产生卡顿,所以第一反应是将传输到APP的码流写到本地,再用播放器进行播放,看看码流本身是否卡顿。

    由于码流的回调是在c++函数中,无法直接获取到沙盒路径,又不愿意为了调试改动代码,所以考虑采用条件断点来导出码流。

    1、首先增加一段写文件的代码

        static std::string path = "";
        std::string ppp = "";
        FILE* fd = fopen(path.c_str(), "a+");
        if((long)fd <= 0)
        {
            printf("=============open failed=========\n");
        }else {
            fwrite(audioData, len, 1, fd);
            fclose(fd);
        }//导出数据
    

    2、然后增加一个条件断点

    屏幕快照 2019-07-02 上午9.55.30.png
    • 此时的沙盒路径还未填写完整

    3、在程序启动时,获取沙盒路径,并将条件断点上的路径填写完整

    3.1 在didFinishLaunchingWithOptions函数中做个断点,并通过打印NSHomeDirectory()获得沙盒路径

    屏幕快照 2019-07-02 上午9.59.25.png

    3.2 将打印的路劲补充到断点中

    屏幕快照 2019-07-02 上午10.00.32.png

    4、然后在接听呼入时进行拉流,执行断点一次后,取消断点,就能将回调码流写入到本地

    最后这个问题定位的确是码流本身有问题,过来的码流会卡顿,最后网络组排查后是由于标准RTP没有在帧头附带帧率信息,网络组会统计1S内的帧数量,计算帧率,如果1s内统计的数量没有达标就会设置为默认码率,但他们也不知道为什么会导致他那边误判帧率为1导致卡顿,最后他们通过设置默认帧率为25解决了这个卡顿问题。

    相关文章

      网友评论

        本文标题:断点调试用于确定APP端的码流是否正常

        本文链接:https://www.haomeiwen.com/subject/tokncctx.html