简介

目前常见的直播协议有三种:RTMP、 FLV 和 HLS,腾讯移动直播LiteAVSDK都是支持的。

  • RTMP:RTMP 协议比较全能,既可以用来推送又可以用来直播,其核心理念是将大块的视频帧和音频帧“剁碎”,然后以小数据包的形式在互联网上进行传输,而且支持加密,因此隐私性相对比较理想,但拆包组包的过程比较复杂,所以在海量并发时也容易出现一些不可预期的稳定性问题。
  • FLV:FLV 协议由 Adobe 公司主推,格式极其简单,只是在大块的视频帧和音视频头部加入一些标记头信息,由于这种极致的简洁,在延迟表现和大规模并发方面都很成熟,唯一的不足就是在手机浏览器上的支持非常有限,但是用作手机端 App 直播协议却异常合适。
  • HLS:苹果推出的解决方案,将视频分成 5-10 秒的视频小分片,然后用 m3u8 索引表进行管理,由于客户端下载到的视频都是 5-10 秒的完整数据,故视频的流畅性很好,但也同样引入了很大的延迟(HLS 的一般延迟在 10-30s 左右)。相比于 FLV, HLS 在 iPhone 和大部分 Android 手机浏览器上的支持非常给力,所以常用于 QQ 和微信朋友圈的 URL 分享。

场景

Google 于北京时间2018年 8 月 7 日正式发布 Android 9.0 正式版系统,并宣布系统版本 Android P 被正式命名为代号“Pie”。对于出海的应用,开发者可能想让APP适配 API 28(Android 9.0 系统)。在适配过程中,开发者可能会遇到拉流失败的问题。

具体问题如下: 使用移动直播SDK播放功能,Pixel XL(9.0系统)手机只能播放 RTMP 格式的流,无法播放HTTP-FLV 格式的流。

解决方案

我们提供以下几种解决方案:

  1. 使用HTTPS协议的播放地址 将FLV格式的播放地址中的 HTTP 替换成 HTTPS。因为我们移动直播 SDK 是支持 HTTPS 协议的直播地址,终端开发者也无须做任何代码改动。
  2. 直接关闭网络策略 这种方式比较简单。直接在AndroidMainfest.xml 标签下使用 android:usesCleartextTraffic="true"

  1. 使用谷歌官方推荐的配置方案。 这种方案比较复杂,开发者可以参考下以下文档进行配置。

谷歌官网建议的网络安全性配置

Android P 中的网络安全配置指南

原理

因为Android 9.0修改了网络策略,所以导致http连接都被中断。

Android 9.0 更多变动信息可以阅读 谷歌官方文档

文章来源于腾讯云开发者社区,点击查看原文