Stream Video 官方 Android SDK
这是 Stream Video 的官方 Android SDK,Stream Video 是一项用于构建视频通话、音频房间和直播应用程序的服务。该库包含一个低级视频 SDK 和一套可重用的 UI 组件。大多数用户从 Compose UI 组件开始,当需要自定义时会转向使用低级 API。
🛥 什么是 Stream?
Stream 允许开发者快速部署可扩展的信息流、聊天消息和视频,并提供行业领先的 99.999% 正常运行时间 SLA 保证。
Stream 提供 UI 组件和状态处理,使构建应用内视频通话变得简单。所有通话都在 Stream 遍布全球的边缘服务器网络上运行,确保最佳的延迟和可靠性。
📕 教程
使用 Stream 的视频组件,你可以利用他们的 SDK 构建应用内视频通话、音频房间、音频通话或直播。最好的入门方式是通过他们的教程:
如果你对自定义视频 SDK 的 UI 组件感兴趣,请查看 UI 指南。
📱 预览
👔 示例项目
你可以在下面找到展示 Android Stream Video SDK 使用案例的示例项目:
- 演示应用:演示应用展示了使用现代 Android 技术栈(如 Compose、Hilt 和 Coroutines)的 Android Stream Video SDK。
- Android 视频示例:提供了一系列使用现代 Android 技术栈和 Kotlin 及 Compose 版 Stream Video SDK 的示例。
- WhatsApp 克隆 Compose 版:WhatsApp 克隆项目展示了使用 Jetpack Compose 和 Compose 版 Stream Chat/Video SDK 构建的现代 Android 开发。
- Twitch 克隆 Compose 版:Twitch 克隆项目展示了使用 Jetpack Compose 和 Compose 版 Stream Chat/Video SDK 构建的现代 Android 开发。
- 会议室 Compose 版:使用 Jetpack Compose 构建的实时会议室应用,用于演示视频通信。
- 纯音频演示:使用 Android Video SDK 实现的纯音频通话应用示例。
👩💻 对创客免费 👨💻
Stream 对大多数业余和爱好项目是免费的。要符合条件,你的项目/公司需要团队成员少于 5 人,月收入低于 1 万美元。创客可以免费获得每月 100 美元的视频使用额度。 更多详情,请查看 创客账户。
💡支持的功能💡
以下是我们支持的一些功能:
- 开发者体验:优秀的 SDK、文档、教程和支持,让你能快速构建
- 边缘网络:全球服务器确保最佳延迟和可靠性
- 聊天:存储聊天、反应、线程、输入指示器、URL 预览等
- 安全和隐私:总部位于美国和欧盟,获得 Soc2 认证,符合 GDPR 标准
- 动态缩放:自动切换分辨率、帧率、比特率、编解码器,并在大型通话中分页显示视频
- 屏幕共享
- 画中画支持
- 活跃发言者
- 自定义事件
- 地理围栏
- 通知和来电铃声
- 用于可靠音频的 Opus DTX 和 Red
- Webhooks 和 SQS
- 后台模式
- 灵活的权限系统
- 通过 ID、链接或邀请加入通话
- 在通话中启用和禁用音频和视频
- 在通话中翻转、启用和禁用摄像头
- 在通话中启用和禁用扬声器
- 推送通知提供商支持
- 通话录制
- 广播到 HLS
🗺️ 路线图
视频路线图和更新日志可在此处查看。
0.2.0 里程碑
- 在应用商店发布应用
- 示例按钮切换扬声器/听筒(Jaewoong)
- 聊天集成(Jaewoong)
- 在示例应用中自动处理超过6名参与者的分页和排序(Daniel)
- 模拟ICE重启和SFU切换的按钮(Jaewoong)
- 错误:java.net.UnknownHostException: 无法解析主机"hint.stream-io-video.com"不会抛出,而是作为INFO记录(Daniel)
- 错误:如果错误不是HttpException,Call.join将抛出异常
- 在所有API调用中报告SDK版本号(Daniel)
- 错误:屏幕共享功能损坏。安卓无法接收/渲染(不确定)屏幕共享。视频显示为灰色头像
- 支持settings.audio.default_device(Daniel)
- 错误:示例应用存在bug,我们没有订阅通话变化,需要在预览界面使用call.get,以便知道参与者数量(Daniel)
- 模拟ICE重启和SFU切换的按钮(Jaewoong)
- 本地视频有时断开连接(发布者的ICE重启问题。我们正在等待后端支持)(Thierry)
- 视频通话演示和内部测试应用的深层链接支持(视频演示跳过认证,内部测试保留认证)(Jaewoong)
- VideoRenderer的XML版本(Jaewoong)
- sortedParticipants状态流更新不准确(Thierry)
- 反应功能
- 错误:参与者离开通话后屏幕共享停止时未被移除(Thierry)(可能只是在参与者离开时不更新状态)
- 静音时说话的状态流(Daniel)
- 蓝牙可靠性
- 清理RtcSession中的重试行为
- 所有团队的SDK开发指南
0.3.0 里程碑
- 完成与设计团队的聊天集成可用性测试(Jaewoong)
- 查询成员和查询通话端点的分页(Daniel)
- 直播教程(依赖RTMP支持)(Thierry)
- 本地版音频级别,用于低延迟音频可视化(Daniel)
- 完成与视频演示流程的集成
- 查询成员和查询通话端点的分页(Daniel)
- 为发布者和订阅者启用ICE重启
- 铃声:完成它,便于测试并为常见更改编写文档(Daniel)
- 错误:Firefox上的屏幕共享在Android上渲染时存在一些问题(Daniel)
- 错误:屏幕共享缩放和放大不工作(Daniel)
0.4.0 里程碑
- 移动端屏幕共享
- 最高分辨率的视频流图片 + 如何添加此功能按钮的文档(Daniel)
- 音频和视频过滤器支持(Daniel)
- 为内部测试实现聊天覆盖(Jaewoong)
- 迁移到Stream Chat SDK v6稳定版(Jaewoong)
- 添加内部测试说明 + Google Play直接链接(Jaewoong)
- 支持之前被忽略的participant.custom字段。ParticipantState第216行(Daniel)
- 默认直播播放器UI + 文档(Jaewoong)
- Compose的反应对话框API(Jaewoong)
- Android SDK开发.md清理(Jaewoong)
- 升级到更新版本的webrtc(Jaewoong/Kanat)
- 审查前台服务vs后台用于音频房间等(Aleks)
- 启用SFU切换
- 支持R8完整模式
- 日志过于详细(rtc非常嘈杂),清理它以聚焦于info及以上级别的重要信息(Daniel)
0.5.0 里程碑
- 通过将WebRTC模型标记为稳定来提高Compose UI SDK性能
- 开发令牌以支持开发环境
1.0.0 里程碑 - 4月
- 模糊和AI视频滤镜
- 通话分析和统计
- 新的
StreamCallActivity
用于更简单的集成
1.1.0 里程碑 - 6月
- Android电信框架集成
- 噪声消除支持
- 等候室
- 会话计时器
- 闭路字幕和多语言转录支持
1.1发布后
- 测试覆盖率
- Dynascale 2.0(取决于后端支持)
- 在更多设备上测试
- 摄像头控制
- 点击对焦
- 分组讨论室
Dynascale 2.0
- 目前我们支持选择要发送的3个层中的哪一个:f、h和q。此外,我们应该支持:
- 更改f轨道的分辨率
- 将使用的编解码器从VP8更改为h264或反之
- 检测webrtc何时更改f轨道的分辨率,并在需要时通知服务器
💼 我们正在招聘!
我们最近完成了3800万美元的B轮融资,并持续积极增长。 我们的API被超过10亿终端用户使用,您将有机会在由世界各地最强大的工程师组成的团队中对产品产生巨大影响。 查看我们当前的职位空缺,并通过Stream的网站申请。
许可证
版权所有 (c) 2014-2024 Stream.io Inc. 保留所有权利。
根据Stream许可证授权;
除非遵守许可证,否则不得使用此文件。
您可以在以下位置获取许可证副本:
https://github.com/GetStream/stream-video-android/blob/main/LICENSE
除非适用法律要求或书面同意,否则根据许可证分发的软件
是基于"按原样"分发的,不附带任何明示或暗示的保证或条件。
有关许可证下的特定语言管理权限和限制,请参阅许可证。