• Stars
    star
    130
  • Rank 269,366 (Top 6 %)
  • Language
    HTML
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

QNRTCWeb 是七牛云推出的一款适用于 Web 平台的实时音视频 SDK,提供了包括音视频通话、静音、发布、订阅多种功能,提供灵活的接口,支持高度定制以及二次开发。

1 概述

QNRTCWeb 是七牛云推出的一款适用于 Web 平台的实时音视频 SDK,提供了包括音视频通话、静音、发布、订阅多种功能,提供灵活的接口,支持高度定制以及二次开发。

QNWebRTC 4.x 是在 2.x 的基础上进行了 API 的重构和优化。从而使使用者能够更加高效的接入,所以新接入的用户推荐使用最新版本的 SDK。
老用户也可以继续使用 QNWebRTC 2.x 版本,可参考 2.x相关文档 。我们也会持续在此版本上进行问题修复和版本更迭,但是后续的一些新功能有可能并不会在 2.x 版本上提供。
使用 2.x 版本的用户若想升级至 4.x 版本,可参考 4.x版本迁移指南 进行升级。

2 功能列表

  • 基本的音视频通话功能
  • 支持内置音视频采集
  • 支持合流配置
  • 支持 Typescript
  • 支持大部分主流桌面浏览器
  • 支持踢人功能
  • 支持静音功能
  • 支持帧率配置
  • 支持音视频码率的配置
  • 支持屏幕共享/窗口共享
  • 支持外部音频导入
  • 支持 USB 外置媒体设备
  • 支持 Mac Safari(11.0以上)
  • 支持视频尺寸配置
  • 支持自动重连
  • 支持丰富的消息回调
  • 支持纯音频互动
  • 支持视频的大小窗口切换
  • 支持背景音乐混音功能
  • 支持实时音量等级获取

3 方案介绍

七牛实时音视频云支持低延时音视频通话,提供灵活丰富的接口,方便进行二次开发。该系统主要包括服务端和客户端两个部分,其中,服务端主要提供了房间管理、权限验证、信令和媒体数据转发等功能,客户端则提供了媒体数据的采集、编解码、传输、渲染等功能。

3.1 系统框图

整个系统的架构如上图所示,主要分为三个部分:

  • 客户端 SDK

    主要负责客户端的音视频采集、渲染、滤镜处理、编解码、传输等工作,客户可以快速集成到自己 App 中,让自己的应用具备音视频通话的能力

  • 服务端 REST API 和 SDK

    主要提供房间管理、状态回调等基本的业务功能,另外还提供鉴黄鉴暴、质量分析等配套功能

  • 服务器

    主要负责信令交互、音视频传输、代理加速等工作,保证音视频互动延时低,可用性高

3.2 交互流程

实时通话交互流程如上图所示,因此,App 服务端需要开发的工作如下:

  • 为用户创建通话房间,并将通话房间和对应主播的 Id 关联起来
  • 计算加入房间的 roomToken 并提供给 App,该 roomToken 是结合 userId、roomName 等信息使用七牛的 AccessKey 和 SecretKey 按照一定的规则生成
  • 提供通话的业务逻辑,如:通话请求/应答业务逻辑、服务端房间管理和踢人等

关于 roomToken 的计算方法请查阅《七牛实时音视频云服务端 API 接口规范》,另外,我们也提供了多种开发语言的 SDK 服务端开发手册及 SDK 下载

3.3 房间管理

关于音视频通话房间的 API 主要分为两个部分,一部分在客户端,另一部分在服务端。在客户端 SDK 中,只有加入/离开连麦房间的接口。我们把创建/销毁连麦房间的功能放到了服务端,由 App Server 向七牛的服务器发送请求来完成。关于服务端 API 的详细内容,请查阅《七牛实时音视频云服务端 API 接口规范》

4 方案优势

  • 实时互动对网络的稳定性和连通性要求非常苛刻,所以必须购买数据中心建设基础网络。而使用七牛的实时音视频云服务,不需要投入大量资金做传输网络的基础建设,按量计费灵活方便。
  • 经验丰富的音视频团队提供稳定、易用的客户端 SDK,保证了客户端应用开发的效率和可用性。
  • 完整的音视频产品线,使用七牛的实时音视频云服务的同时可以无缝接入七牛其他的所有服务,例如短视频、直播、存储、大数据分析等服务。

5 应用场景

5.1 主播连麦

  • 支持主播之间连麦一起直播,带来与传统单向直播不一样的体验
  • 48KHz 采样率、全频带编解码以及对音乐场景的特殊优化保证观众可以听到最优质的声音

5.2 视频会议

  • 小范围实时音视频互动,提供多种视频通话布局模板,更提供自定义布局方式,保证会议发言者互相之间的实时性,提升普通观众的观看体验
  • 提供七牛云自有的直播分发服务,可实现 HLS、RTMP、HTTP 等多种直播分发形式,支持更多人通过拉取直播流收看会议内容,适合大型的企业在线会议
  • 支持动态邀人,踢人、禁音,禁视会议权限分级控制
  • 客户可以利用七牛实时音视频云轻松做出一款类似 WebEx 的应用

5.3 一对一社交

  • 客户可以利用七牛实时音视频云实现 QQ、微信、陌陌等社交应用的一对一视频互动
  • 提供七牛云自有的直播分发服务,可实现 HLS、RTMP、HTTP 等多种直播分发形式,画面清晰、声音清晰不卡顿

5.4 狼人杀游戏

  • 支持 12 人视频通话,玩家可在游戏中选择只开启语音或同时开启音视频
  • 提供七牛云自有的直播分发服务,可实现 HLS、RTMP、HTTP 等多种直播分发形式,音视频体验稳定流畅,不卡麦,不黑麦

5.5 在线教育

  • 自定义的视频布局功能允许开发者按照自己的业务需求调整老师和学生的显示位置
  • 旁路直播功能加上直播云的直播功能,实现观众人数无上限,让更多学生享受在线教育的便利
  • 搭配使用聊天室功能,文字、语音、图片、视频包括自定义消息等,更多的互动方式有效提升课堂氛围
  • 服务端录制对接点播平台,支持课程录制以及在线回放,让优质资源服务更多学生

5.6 在线抓娃娃

  • 娃娃机端,通过主板或 PC 机连接两个摄像头,采集视频数据
  • 通过编码器编码,进行视频流的优化,通过实时流网络进行视频实时传输,最后到达操作端,解码、播放
  • 操作端通过业务 Server 将操控指令发送给娃娃机端,通过视频流获得实时反馈
  • 采用 WebSocket 技术,结合成熟稳定的直播云端,突破了 HLS 高延迟的技术限制,同时还能保持 H5 的传播便捷特性

5.7 在线客服

  • 线上开展音视频对话,对客户的资信情况进行审核,方便金融科技企业实现用户在线签约、视频开户验证以及呼叫中心等功能
  • 提供云端存储空间及海量数据的处理能力,提供高可用的技术和高稳定的平台

6 开发文档

请参考开发文档:QNRTCWeb 开发文档

7 反馈及意见

当你遇到任何问题时,可以通过在 GitHub 的 repo 提交 issues 来反馈问题,请尽可能的描述清楚遇到的问题,如果有错误信息也一同附带,并且在 Labels 中指明类型为 bug 或者其他。

通过这里查看已有的 issues 和提交 Bug

8 FAQ

8.1 如何体验 Demo?

您可以直接使用主流浏览器(Firefox 50+, Safari 11+, Chrome 56+)访问我们 Web 版 Demo 来体验通话效果

8.2 实时通话功能是否收费?

客户端 SDK 不收费,服务端可按照带宽、流量或者时长收费,具体请联系七牛商务或者技术支持。

8.3 实时通话对讲延时多大?

正常网络条件下,对讲延时在 200-300ms 左右。

8.4 是否有服务端的 SDK 或者 demo 代码可以参考?

有的,请参考: QNRTC-Server

More Repositories

1

PLDroidPlayer

PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
4,550
star
2

PLPlayerKit

PLPlayerKit 是七牛推出的一款免费的适用于 iOS 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
2,012
star
3

PLDroidShortVideo

PLDroidShortVideo 是七牛推出的一款适用于 Android 平台的短视频 SDK,提供了包括美颜、滤镜、水印、断点录制、分段回删、视频编辑、混音特效、视频剪辑、本地转码、视频上传在内的多种功能,支持高度定制以及二次开发。
Java
1,668
star
4

PLDroidMediaStreaming

PLDroidMediaStreaming 是七牛推出的一款适用于 Android 平台的推流 SDK,支持 RTMP 推流,h.264 和 AAC 编码,硬编、软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。PLDroidMediaStreaming 是现在目前重点维护的版本,自带采集模块也支持用户自己做采集端。
Java
1,446
star
5

PLCameraStreamingKit

PLCameraStreamingKit 是 Pili 直播 SDK 的 iOS 推流端,是带有采集模块老版本 SDK。如果是新用户接入,建议使用 PLMediaStreamingKit。该版本支持 RTMP 推流,h.264 和 AAC 编码,硬编软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
C
1,032
star
6

PLMediaStreamingKit

PLMediaStreamingKit 是七牛推出的一款适用于 iOS 平台的推流 SDK,支持 RTMP 推流,h.264 和 AAC 编码,硬编、软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
Objective-C
539
star
7

PLShortVideoKit

PLShortVideoKit 是七牛推出的一款适用于 iOS 平台的短视频 SDK,提供了包括美颜、滤镜、水印、断点录制、分段回删、视频编辑、混音特效、视频剪辑、本地转码、视频上传在内的多种功能,支持高度定制以及二次开发。
Objective-C
445
star
8

PLStreamingKit

PLStreamingKit 是 Pili 直播 SDK 的 iOS 推流端,是不带采集模块老版本 SDK。如果是新用户接入,请使用 PLDroidMediaStreaming。该版本支持 RTMP 推流,h.264 和 AAC 编码,软编硬编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
Objective-C
250
star
9

ipcam_sdk

七牛推出了一款适用于嵌入式 IP Camera 设备进行 RTMP 推流的 SDK 开发套件
C++
166
star
10

wxapp-live-demo

七牛直播小程序 demo 代码
JavaScript
161
star
11

pili-sdk-java

Pili Streaming Cloud server-side library for Java
Java
119
star
12

pili-librtmp

C
116
star
13

QNRTC-Android

QNDroidRTC 是七牛云推出的一款适用于 Android 平台的实时音视频 SDK,提供了包括音视频通话、美颜、滤镜、水印等多种功能,提供灵活的接口,支持高度定制以及二次开发。
Java
113
star
14

QPlayer2-Android

HTML
86
star
15

pili-sdk-php

Pili Streaming Cloud server-side library for PHP
PHP
73
star
16

pili-sdk-nodejs

Pili Streaming Cloud server-side library for NodeJS
JavaScript
68
star
17

pili-html5-player-example

HTML5 <audio> or <video> player with Flash and Silverlight shims that mimics the HTML5 MediaElement API, enabling a consistent UI in all browsers.
JavaScript
60
star
18

QNRTC-iOS

QNRTCKit 是七牛云推出的一款适用于 iOS 平台的实时音视频 SDK,提供了包括音视频通话、美颜、滤镜、水印等多种功能,提供灵活的接口,支持高度定制以及二次开发。
Objective-C
53
star
19

pili-sdk-python

Pili Streaming Cloud server-side library for Python
Python
52
star
20

PLDroidRTCStreaming

PLDroidRTCStreaming 是七牛推出的一款适用于 Android 平台的连麦互动 SDK,支持低延时音视频通话、RTMP 直播推流,可快速开发一对一视频聊天、多人视频会议、网红直播连麦、狼人杀、娃娃机等应用,接口简单易用,支持高度定制以及二次开发。
Java
50
star
21

PLAudioStreamingKit

Pili Live Streaming SDK for iOS, AAC hardware encoding and RTMP publishing supported.
C
48
star
22

pili-sdk-php.v2

Pili Streaming Cloud Server-Side Library For PHP, Version 2
PHP
46
star
23

pili-sdk-go

Pili Streaming Cloud server-side library for Go
Go
38
star
24

PLWinPlayer

PLWinPlayer 是七牛推出的一款适用于 Windows 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
C++
38
star
25

pili-streaming-react-native

pili-streaming-react-native 是支持 React Native 项目添加直播推流功能的 SDK,底层基于 PLDroidMediaStreaming (Android) 和 PLMediaStreamingKit(iOS) 实现。
Java
37
star
26

pili-react-native

Pili Streaming Cloud React Native SDK
Java
32
star
27

pili-sdk-go.v2

Pili Streaming Cloud Server-Side Library For Go, Version 2
Go
28
star
28

PLLiving

The best practice of Pili iOS Streaming SDK
Objective-C
26
star
29

PLRTCStreamingKit

PLRTCStreamingKit 是七牛推出的一款适用于 iOS 平台的连麦互动 SDK,支持低延时音视频通话、RTMP 直播推流,可快速开发一对一视频聊天、多人视频会议、网红直播连麦、狼人杀、娃娃机等应用,接口简单易用,支持高度定制以及二次开发。
Objective-C
24
star
30

pili-sdk-ruby

Pili Streaming Cloud server-side library for Ruby
Ruby
23
star
31

pili-videojs-example

An example application in Video.js
JavaScript
22
star
32

QPlayer2-IOS

HTML
21
star
33

QNRTC-WxApp

QNRTCWxApp 是七牛云推出的一款适用于微信小程序平台的实时音视频 SDK,提供了包括音视频通话、静音、发布、订阅多种功能,
20
star
34

PLLiveCourse

Pili 公开课
Objective-C
19
star
35

QNRTC-SampleCode-Video-Basic

Sample Code 工程用于展示如何 加入/离开 房间,发布/订阅 音视频数据流,动态 启用/禁用 本地音视频数据流,切换前后置摄像头等功能使用
Objective-C
17
star
36

QNRTC-Windows

QNRTCWin 是七牛云推出的一款适用于 Windows 平台的实时音视频 SDK,提供了灵活的接口,支持高度定制以及二次开发。
C++
16
star
37

pili-sdk-csharp

C#
13
star
38

PLDroidMediaStreaming-ByteDance

Java
13
star
39

pilipilid

pilipilid
JavaScript
13
star
40

PLMediaStreamingKit-ByteDance

PLMediaStreamingKit-ByteDance 是七牛推出的一款适用于 iOS 平台的具有高级特效功能的推流 SDK,提供了包括高级美颜、高级滤镜、动态贴纸、水印、推流、混音、QUIC等在内的多种功能,支持高度定制以及二次开发。
Objective-C
13
star
41

cpili

A command line tool for streaming an h.264 / aac / flv file over RTMP
C
12
star
42

pili-sdk-demo-server

七牛直播/连麦 SDK 官方 demo 的后台业务服务器代码
Go
10
star
43

QNRTC-Linux

QNRTCLinux 是七牛云推出的一款适用于 Linux 平台的实时音视频 SDK,提供了灵活的接口,支持高度定制以及二次开发。
C++
8
star
44

QNCube_Android

牛魔方是七牛云推出的一款基于七牛rtc的方案研发demo集合app,包含了面试场景、工业检修、在线教育、在线ktv、互动娱乐、一起看电影、在线考试,语聊房、pk直播解决方案demo。
Kotlin
8
star
45

docs

documentation for Pili
7
star
46

QNRTC-Uniapp

Objective-C
7
star
47

PLVendorLibs

The Third Party Dependency Libraries of iOS
C
7
star
48

QNLiveKit_Web

互动直播低代码Web
TypeScript
6
star
49

pili-sdk-go-example

CSS
6
star
50

PLDroidShortVideo-ByteDance

Lua
5
star
51

QNRTPlayer-Web

TypeScript
5
star
52

PLShortVideoKit-ByteDance

Lua
5
star
53

QNRTCLive-iOS

Lua
3
star
54

pili-sdk-c

Pili Streaming Cloud server-side library for C/C++
C
3
star
55

QNLiveKit_Server

互动直播低代码服务端
Go
3
star
56

QNShortVideo-ByteDance

Things related to ByteDance SDK and QNShortVideo SDK
Objective-C
3
star
57

pili-camera-sdk-demo

An example based on the pili-camera-sdk
C
3
star
58

QNLiveKit_Android

互动直播低代码Android
Kotlin
3
star
59

QNAISDK-iOS

Objective-C
3
star
60

PLMediaStreaming-RongCloud

Java
3
star
61

PLMediaStreaming-ByteDance

Things related to ByteDance SDK and PLMediaStreaming SDK
Objective-C
3
star
62

QNCube_Web

TypeScript
3
star
63

QNRTCLive-Android

Lua
2
star
64

QNRTC-Signal

Signal API for QNRTC
2
star
65

QNRTPlayer-iOS

Objective-C
2
star
66

QNDroidIMSDK

Java
2
star
67

QNLiveKit_iOS

互动直播低代码iOS
Objective-C
1
star
68

QPlayer2-Windows

HTML
1
star
69

QNRTC-ByteDance-Android

Lua
1
star
70

QNUniappIMSDK

QNUniappIMSDK
Vue
1
star
71

QNCube_Server

Go
1
star
72

QNVideoTemplate-Android

Java
1
star
73

QAuth_iOS

一键登录对外demo
Objective-C
1
star
74

NiuVideo-iOS

七牛 SDK 演示型 app 源码
Objective-C
1
star
75

QNShortVideo-FaceUnity

Things related to FaceUnity SDK and QNShortVideo SDK
Java
1
star
76

QNDroidWhiteBoardSDK

Kotlin
1
star
77

QNRTPlayer-Android

Java
1
star