我正在开发一个android应用程序,它使用将DJI无人机的视频流发送到。视频是使用RTMP协议编码和发送的,使用SDK方法。由于使用ANT到WEBRTC,由于延迟非常低,我注意到了一个问题:
我还用DJI提供的Mobile示例进行了测试,测试的行为是相同的。考虑到性能问题,我随后附加了,我注意到了一个非常奇怪的行为:附带了分析器,流性能就完美了。4-500毫秒的恒定潜伏期,即使在几个小时后也没有任何损失。如果我立即启动该应用程序并附带分析器或将其附加到打开的应用程序,那么重要的是在启动流之前,分析器是附加的。
剖析环境和非剖析环境有什么不同?是否有一些参数(线程优先级,系统定时器解析,没有设备优化.?)在执行Android Profiler时设置在系统/应用程序上?
编辑
这是设置rtmp URL并开始流的代码片段,不需要更多的代码。所有的魔力都是由完成的。
new Thread() {
@Override
public void run() {
DJISDKManager.getInstance().getLiveStreamManager().setLiveUrl(rtmpUrl);
int result = DJISDKManager.getInstance().getLiveStreamManager().startStream();
DJISDKManager.getInstance().getLiveStreamManager().setStartTime();
}
}.start();
发布于 2020-09-16 23:31:50
我不知道是什么让你的应用程序运行得更快,附带了分析器,但我可以确认没有你提到的东西(线程优先级等)。是在分析器中实现的。我可以列出在附加分析器(设备上的服务器、JVMTI回调等)时导致性能开销的一些因素。他们只应该放慢应用程序的速度,而不是相反。
如果不看你的应用程序,我想不出任何解释。如果您喜欢,可以查看Android分析器的源代码。
https://stackoverflow.com/questions/63907401
复制相似问题