百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

全民直播时代——基于WebRTC开发实时通信服务

bigegpt 2024-10-23 08:55 6 浏览


内容来源:2017年7月8日,又拍云多媒体开发资深工程师刘博在“不止云计算,云时代还有哪些宝典”进行《云通信 - 基于 WebRTC 技术的实时通信服务开发实践》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:1126 | 4分钟阅读

嘉宾PPT及演讲视频:http://t.cn/RYTuGQb

摘要

本次分享基于 WEBRTC 技术的实时通信服务的开发经验,希望通过这次分享能让大家对这方面更有兴趣。

什么是互动直播?

互动直播是多路音视频以及数据实时通信的解决方案。

首先看一下我们又拍云自己的应用场景。又拍云是由杭州研发总部加上北京、上海、广州等多家分公司组成的。我们的管理层每周一上午有个每周例会,我们很需要一个简单可靠的远程会议系统。

在过去,我们用的是传统的电话会议硬件,复杂难用,价格不便宜,而且效果也不理想。

现在,我们只需要一台笔记本电脑外加一个高清摄像头就可以了,不需要任何配置、安装任何插件。

互动直播的特点

互动直播和传统直播相比的本质的区别是延时。

与传统的直播相比,互动直播赋予了参与直播的每一个成员互动交流的能力。因此,也对实时性、抗回声要求更高。

在视频会议、远程教育、远程咨询、视频社交、互动游戏等很多场景往往只能选择实时性更高的互动直播技术。

为什么选择 WEBRTC?

WebRTC是一个开源,免专利费的项目,大大节省了我们的开发时间成本。

WebRTC由Google 主导,技术非常先进。

各大浏览器以及终端逐渐加大对 WebRTC 技术的支持。

WEBRTC OVERVIEW

WebRTC全称是 Web Real-Time Communication。WebRTC 并不是一个单一的协议,而是一个标准,包含一堆协议和API。

WebRTC通过提供简单易用的JavaScript APIs让浏览器拥有了 P2P音视频和数据分享的能力,同时不需要安装任何插件。

WEBRTC STANDARDS AND HISTORY

2010年5月,Google花了$68.2million收购了GIPS,一年后Google就开源了WebRTC项目。

WEBRTCW3C Working Group:浏览器API;

RTCWEBIETF Working Group:协议、数据格式、安全、P2P等。

WebRTC并不是一个孤立的协议。起初是为了浏览器与浏览器之间实时通信,也可以通过信令协议对接现有的SIP客户端、PSTN 网络、移动端等。

WEBRTC的核心组成

音视频引擎:OPUS、VP8/VP9、H264;

传输层协议:底层传输协议为UDP;

媒体协议:SRTP/SRTCP;

数据协议:DTLS/SCTP;

P2P内网穿透:STUN/TURN/ICE/Trickle ICE;

信令与SDP协商:HTTP/WebSocket/SIP. Offer Answer模型。

我们的实时通信底层平台UPRTC

传统的 WebRTC 应用模式是 P2P 的,我们改造成服务器中转的模式。

完全分布式系统, 部署到全国所有边缘节点,通过我们的内部加速网络加速。

网络拥塞自适应控制, 较强的弱网适应能力。

针对底层开源组件进行优化改造,支持高并发。

灵活高效的业务信令,支持对敏感信令进行鉴权。

utun解决跨地区,跨ISP延迟高且不稳定等网络问题。

覆盖200多个边缘节点,4000多台服务器;覆盖3个大运营商,2个小运营商。

uprtc实现媒体接入,接入Web端与移动端。

基于我们底层 UPRTC 平台的第一个项目——上会

我们选用的编码格式H.264 + Opus。修复WebRTC内核 iOS 端有音频处理过度消耗CPU的BUG,以及修复WebRTC的core音视频不同步的BUG。Android端H.264编码不支持高通以外芯片硬解码。客户端解码能力有限,总会话人数需要控制在8人以内。服务器端需加入码率自适应算法,自动根据参与人数控制总带宽在2Mbps以内。美颜、滤镜接入会增加处理延时,所以对此性能要求非常高。

我今天的分享就到这里,谢谢大家!

编者:IT大咖说,转载请标明版权和出处

相关推荐

Docker篇(二):Docker实战,命令解析

大家好,我是杰哥上周我们通过几个问题,让大家对于Docker有了一个全局的认识。然而,说跟练往往是两个概念。从学习的角度来说,理论知识的学习,往往只是第一步,只有经过实战,才能真正掌握一门技术所以,本...

docker学习笔记——安装和基本操作

今天学习了docker的基本知识,记录一下docker的安装步骤和基本命令(以CentOS7.x为例)一、安装docker的步骤:1.yuminstall-yyum-utils2.yum-con...

不可错过的Docker完整笔记(dockerhib)

简介一、Docker简介Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,...

扔掉运营商的 IPTV 机顶盒,全屋全设备畅看 IPTV!

其实现在看电视节目的需求确实大大降低了,折腾也只是为了单纯的让它实现,享受这个过程带来的快乐而已,哈哈!预期构想家里所有设备直接接入网络随时接收并播放IPTV直播(电信点播的节目不是太多,但好在非常稳...

第五节 Docker 入门实践:从 Hello World 到容器操作

一、Docker容器基础运行(一)单次命令执行通过dockerrun命令可以直接在容器中执行指定命令,这是体验Docker最快捷的方式:#在ubuntu:15.10容器中执行ech...

替代Docker build的Buildah简单介绍

Buildah是用于通过较低级别的coreutils接口构建OCI兼容镜像的工具。与Podman相似,Buildah不依赖于Docker或CRI-O之类的守护程序,并且不需要root特权。Builda...

Docker 命令大全(docker命令大全记录表)

容器生命周期管理run-创建并启动一个新的容器。start/stop/restart-这些命令主要用于启动、停止和重启容器。kill-立即终止一个或多个正在运行的容器rm-于删除一个或...

docker常用指令及安装rabbitMQ(docker安装rabbitmq配置环境)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

使用Docker快速部署Storm环境(docker部署confluence)

Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的D...

Docker Desktop安装使用指南:零基础教程

在之前的文章中,我多次提到使用Docker来安装各类软件,尤其是开源软件应用。鉴于不少读者对此有需求,我决定专门制作一期关于Docker安装与使用的详细教程。我主要以Macbook(Mac平台)为例进...

Linux如何成功地离线安装docker(linux离线安装httpd)

系统环境:Redhat7.2和Centos7.4实测成功近期因项目需要用docker,所以记录一些相关知识,由于生产环境是不能直接连接互联网,尝试在linux中离线安装docker。步骤1.下载...

Docker 类面试题(常见问题)(docker面试题目)

Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimages-q-fdanging=true)命令2、如何查看...

面试官:你知道Dubbo怎么优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、...

【Docker 新手入门指南】第五章:Hello Word

适合人群:完全零基础新手|学习目标:30分钟掌握Docker核心操作一、准备工作:先确认是否安装成功打开终端(Windows用户用PowerShell或GitBash),输入:docker--...

松勤软件测试:详解Docker,如何用portainer管理Docker容器

镜像管理搜索镜像dockersearch镜像名称拉取镜像dockerpullname[:tag]列出镜像dockerimages删除镜像dockerrmiimage名称或id删除...