程序员

关于大疆SDK推流延迟的解决方案

2019-08-27  本文已影响0人  世外大帝

这个问题一直困扰了我将近2个星期,期间自己写过,试过yasea框架,随着不断试错,结构和流程也是越来越清晰了,最后发现居然是权限问题!!!

本来对yasea框架做了一定的修改,打算用yasea框架接收大疆的数据进行编码推流,然后测试过程中,打开了全部权限后真的将延迟缩短至2-3s,然后为了追寻根本原因,一句一句的注释掉了yasea的代码,最后都注释完了还是不延迟,于是将yasea框架彻底删掉,方向锁定到了权限上:

用大疆无人机的sdk来开发,按照常理来说是不需要相机和录音权限的,但是偏偏是这两个权限导致了高延迟,一般测试为10-15s,加上这两项权限后,动态权限变为:

    private static final String[] REQUIRED_PERMISSION_LIST = new String[]{
            Manifest.permission.VIBRATE,
            Manifest.permission.INTERNET,
            Manifest.permission.ACCESS_WIFI_STATE,
            Manifest.permission.WAKE_LOCK,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_NETWORK_STATE,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.CHANGE_WIFI_STATE,
            Manifest.permission.CHANGE_NETWORK_STATE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.BLUETOOTH,
            Manifest.permission.BLUETOOTH_ADMIN,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.READ_PHONE_STATE,
            // 添加这俩权限就不会延迟了
            Manifest.permission.CAMERA,
            Manifest.permission.RECORD_AUDIO
    };

以上不一定都需要,我是基于大疆的demo直接加的

使用rtmp推流,编码为H264,推到nginx服务器,使用webRTC拉流,从开始推流到前端显示,延迟为2s左右

上一篇下一篇

猜你喜欢

热点阅读