這個問題一直困擾了我將近2個星期,期間自己寫過羽杰,試過yasea框架屎慢,隨著不斷試錯瞭稼,結(jié)構(gòu)和流程也是越來越清晰了,最后發(fā)現(xiàn)居然是權(quán)限問題D寤荨;分狻!
本來對yasea框架做了一定的修改集灌,打算用yasea框架接收大疆的數(shù)據(jù)進行編碼推流悔雹,然后測試過程中,打開了全部權(quán)限后真的將延遲縮短至2-3s欣喧,然后為了追尋根本原因腌零,一句一句的注釋掉了yasea的代碼,最后都注釋完了還是不延遲唆阿,于是將yasea框架徹底刪掉益涧,方向鎖定到了權(quán)限上:
用大疆無人機的sdk來開發(fā),按照常理來說是不需要相機和錄音權(quán)限的驯鳖,但是偏偏是這兩個權(quán)限導(dǎo)致了高延遲闲询,一般測試為10-15s,加上這兩項權(quán)限后浅辙,動態(tài)權(quán)限變?yōu)椋?/p>
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,
// 添加這倆權(quán)限就不會延遲了
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO
};
以上不一定都需要扭弧,我是基于大疆的demo直接加的
使用rtmp推流,編碼為H264记舆,推到nginx服務(wù)器鸽捻,使用webRTC拉流,從開始推流到前端顯示泽腮,延遲為2s左右