关于大疆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左右