Android音视频直播低延迟探究之:WLAN低延迟模式

Android WLAN低延迟模式

Android WLAN低延迟模式是 Android 10 引入的一种功能,允许对延迟敏感的应用将 Wi-Fi 配置为低延迟模式,以减少网络延迟,启动条件如下:

  • Wi-Fi 已启用且设备可以访问互联网。
  • 应用已创建并获得 Wi-Fi 锁,并且正在前台运行。
  • 屏幕处于开启状态。

好多开发者提到,在一些设备,是不是需要开这个WLAN的低延迟模式,为此,我们做了测试,本文先从理论层面解读,再到代码层面测试比较实际的效果。

先说理论探究:我们都知道,WIFI_MODE_FULL_LOW_LATENCY是一种 Wi-Fi 模式的常量表示。以下是对其含义的分析:

一、各部分含义

  1. "WIFI_MODE_FULL":
    • 通常表示全功能模式。在这种模式下,设备可能会启用所有可用的 Wi-Fi 功能和特性,以提供最佳的连接性能和体验。这可能包括较高的数据传输速率、支持多种协议和功能扩展等。
  2. "LOW_LATENCY":
    • 表示低延迟。低延迟对于一些对实时性要求较高的应用非常重要,例如在线游戏、视频会议、实时流媒体等。在这种模式下,Wi-Fi 连接会尽量减少数据传输的延迟时间,以确保快速响应和流畅的交互体验。

二、可能的应用场景

  1. 在线游戏
    • 对于竞技类在线游戏,低延迟是至关重要的。玩家需要快速的响应时间来执行操作,否则可能会导致游戏体验不佳。启用WIFI_MODE_FULL_LOW_LATENCY模式可以减少网络延迟,提高游戏的流畅性和响应速度。
  2. 视频会议和直播
    • 在视频会议和直播中,低延迟可以确保实时的音频和视频传输,避免出现卡顿和延迟现象。这种模式可以提供更稳定和流畅的通信体验,提高会议和直播的质量。
  3. 实时流媒体
    • 对于观看实时体育赛事、音乐会等流媒体内容,低延迟可以减少缓冲时间,提供更即时的观看体验。

三、实现方式

  1. 硬件支持
    • 设备的 Wi-Fi 芯片和天线需要支持低延迟功能。一些高端的 Wi-Fi 芯片可能会专门针对低延迟应用进行优化,提供更好的性能。
  2. 软件配置
    • 操作系统和应用程序可以通过设置来启用低延迟模式。例如,在设备的网络设置中选择WIFI_MODE_FULL_LOW_LATENCY模式,或者在特定的应用程序中进行网络优化设置。
  3. 网络优化
    • 可以通过优化网络环境来减少延迟。例如,使用更靠近设备的 Wi-Fi 接入点、减少网络拥塞、优化路由器设置等。

需要注意的是,具体的实现方式可能因设备和操作系统的不同而有所差异。在使用WIFI_MODE_FULL_LOW_LATENCY模式时,可能会对设备的电池寿命、功耗和其他性能方面产生一定的影响。此外,不是所有的设备和网络环境都支持这种模式,因此在使用前需要确保设备和网络的兼容性。

Android平台代码实现

为了验证Android平台WLAN低延迟模式,我们在大牛直播的RTSP|RTMP播放器模块,添加了如下的代码测试,下图展示的是我们Windows平台RTMP推流模块,采集屏幕数据,然后推RTMP到nginx服务,然后Android端从nginx获取RTMP流,同时播放4路的效果图(1920*1080分辨率),几无多大延迟,值得注意的是,实际上我们不开启这个选项,SDK也没多大延迟,所以是不是这块设置有效果,还要后面慢慢探究论证。

AndroidManifest.xml添加相关权限:

java 复制代码
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

启动APP的时候,打开:

java 复制代码
WifiManager wifiManager = (WifiManager) context_.getSystemService(Context.WIFI_SERVICE);  //激活WIFI性能锁定
wifi_lock_ = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, TAG);

wifi_lock_.acquire();
PowerManager powerManager = (PowerManager) context_.getSystemService(Context.POWER_SERVICE); //激活CPU性能锁定
wake_lock_ = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wake_lock_.acquire();

APP停止播放或业务关闭的时候,调用release接口释放:

java 复制代码
....

if (wake_lock_ != null) {
	wake_lock_.release();
	wake_lock_ = null;
}
if (wifi_lock_ != null) {
	wifi_lock_.release();
	wifi_lock_ = null;
}

总结

Android WLAN低延迟模式为开发者提供了一种优化网络延迟的方式,但在使用时需要满足特定的条件,并且设备制造商也需要更新 WLAN 驱动程序和供应商 HAL 来支持该功能。特别是我们做音视频对延迟比较敏感的行业,可酌情参考。

相关推荐
优联前端1 小时前
Web 音视频(二)在浏览器中解析视频
前端·javascript·音视频·优联前端·webav
我真不会起名字啊3 小时前
“深入浅出”系列之音视频开发:(3)音视频开发的学习路线和必备知识
音视频
是店小二呀3 小时前
【2024年CSDN平台总结:新生与成长之路】
数据库·人工智能·程序人生·aigc·音视频
无限大.4 小时前
优化使用 Flask 构建视频转 GIF 工具
python·flask·音视频
Dwyane034 小时前
Android实战经验篇-AndroidScrcpyClient投屏一
android
FlyingWDX4 小时前
Android 拖转改变视图高度
android
_可乐无糖4 小时前
Appium 检查安装的驱动
android·ui·ios·appium·自动化
一名技术极客6 小时前
Python 进阶 - Excel 基本操作
android·python·excel
我是大佬的大佬7 小时前
在Android Studio中如何实现综合实验MP3播放器(保姆级教程)
android·ide·android studio
lichong9517 小时前
【Flutter&Dart】MVVM(Model-View-ViewModel)架构模式例子-http版本(30 /100)
android·flutter·http·架构·postman·win·smartapi