1.音频优化
1.1音频投屏包含以下投屏路径:
- 播放原始音频
- 采集pcm数据
- 编码pcm数据
- 网络发送
- 网络接收
- 解码音频数据
- 播放pcm数据
1.2优化思路:
采集pcm数据不通过AudioRecorder采集,直接在AudioFlinger中采集pcm数据,注意需要采集内录模式下(REMOTE_SUBMIX)混音后的数据。
编码pcm数据可以尝试针对不同性能的设备采用不同的码率或格式。特别是软件编码的情况下,耗时较大。网络延时大时可以降低码率。
直接传送pcm数据,跳过编解码阶段。
播放pcm数据可以使用NDK进行播放,提高效率,指定播放策略为LOW_LATENCY.
2. 视频优化
1.1视频投屏包含以下投屏路径:
- 播放原始视频
- 采集yuv数据
- 编码yuv数据
- 网络发送
- 网络接收
- 解码视频数据
- 渲染yuv数据
视频编码及解码耗时更大,可以考虑多线程方案,如编码,网络发送,网络接收,解码和渲染分别采用不同的线程。记录不同线程buferqueue的实时大小,可用于定位耗时瓶颈。
不同性能的设备采用不同码率和格式,以提高效率。
在网络阻塞导致出现帧积累的情况下,消费者可能无法及时消耗掉,在渲染前应考虑丢帧,以免造成延时累计。