WebRTC开发者社区为开发者提供最新最全的WebRTC资料
目录
  • 首页
  • WebRTC概念与基础
  • WebRTC项目与应用
  • WebRTC教程资料
  • WebRTC开发资源
  • WebRTC源码分析
  • WebRTC服务端开发
  • WebRTC网络与通信
  • WebRTC编码与解码
  • WebRTC问题与缺陷
  • WebRTC-Androd端开发
  • WebRTC-RFC文档
  • WebRTC音频处理
  • WebRTC-Mediasoup
  • FFMpeg音视频处理
  • H264编解码基础
  • openCV相关

WebRTC本地C++开发基础

2019-11-22 15:16:59

本文以Linux/Mac平台为例,简单归纳总结WebRTC本地C++开发的基本步骤。

1. 先决条件

Google使用一个脚本工具集depot_tools进行代码检出、下载管理、代码审查、代码提交等日常开发工作[1]。该工具集中的常用工具包括gclient,gcl,git-cl,repo等等。在Linux/Mac平台上安装depot_tools工具集非常简单[2]:下载源代码并添加到PATH中即可:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

需要注意的是,我们要把depot_tools放在PATH的最前端,否则gcl命令会指向GNU Common Lisp编译器。另外,export这一句最好添加到.bashrc中,这样就不必每次都设置。

对于Ubuntu/Debian系统,除安装depot_tools工具集,还有另外一项先决条件:在获取WebRTC源代码后,需要运行源代码中的install-build-deps.sh脚本安装一系列依赖软件:

 

More...

关于直播,所有的技术细节都在这里了

2019-11-22 15:34:55

网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看,主播不满足于单向的直播,观众则更渴望互动,直播的打开时间和延迟变成了影响产品功能发展重要指标。那么,问题来了:如何实现低延迟、秒开的直播?

先来看看视频直播的5个关键的流程:录制->编码->网络传输->解码->播放,每个环节对于直播的延迟都会产生不同程度的影响。这里重点分析移动设备的情况。受限于技术的成熟度、硬件环境等,我们针对移动场景简单总结出直播延迟优化的4个点:网络、协议、编解码、移动终端,并将分四期来一一解密UCloud直播云实现低延迟、秒开的技术细节。

本文主要讲述UCloud直播云实现接入网络优化的技术细节。

More...

iOS Airplay Screen Mirroring 投屏技术详解

2019-11-22 15:23:00

投屏技术已经被大量用在身边的产品, 比如电视投屏, 投影仪, 视频会议产品中. 在iOS平台外的其他平台中都已经有非常成熟的标准和实现. 但在封闭的苹果iOS和Mac系统中, 苹果使用私有的Airplay协议进行多屏互动,
只开放给自己生态中的产品. 对此相关技术限制比较严格,甚至在iOS9中加上了更严格的加密算法, 直接导致很多投屏的产品不可用.

iOS中的投屏方案:

1, ReplayKit

iOS9中引入了ReplayKit, 让开发者有了一定的获取屏幕数据的能力. 并在iOS10和iOS11中继续扩展了ReplayKit的能力. 但还是有很大的限制, 比如在使用ReplayKit的api时只能录制当前应用的应用, 无法在应用进入后

台之后继续录屏. 如果使用系统级别的屏幕录制,又无法获得每一帧的数据,只能获得最后录取的单个视频. 这样对第三方的开发有了非常大的限制.

2, Airplay

Airplay是苹果提供的一种多屏互动技术, 可以将音频照片,视频, 屏幕从iOS设备或者Mac电脑上投射到支持airplay接受的设备上,如Apple TV。这样可以将小屏映射到大屏,可以无线音乐,可以图片分享等等.

但是Airplay属于苹果私有协议方案,设备间的协商与传输过程都进行了加密处理,并不能用于其他平台中。我们已经完整的逆向了Airplay的全部协议栈,并破解了其加密方案,可以提供跨平台Airplay接收方案。

这样可以方便实现跨平台的多屏共享。

同时,通过研究,我们也可以通过Airplay Mirroring技术,做到在iPhone上把自己的屏幕的内容投送给当前iPhone,在某些情况下这种airplay的破解却非常有用处,比如手游直播。

这中投屏方案使用了iOS原生的投屏能力,并且是完全的软件方案,非常方便进行集成和使用。

下面将介绍Airplay Mirroring接收端的实现原理,并揭示相关协议交互过程。

More...

【WebRTC】自己做一个简单的sfu视频通讯demo

2019-11-22 16:19:09

由于p2p视频通讯不支持定向ip流量,

所以,做了一个基于mediasoup框架的sfu转发服务器和简单的web客户端(给安卓端和ios端提前踩坑)

涉及到的技术:

  1. mediasoup(官网)

  2. Nodejs

  3. React

  4. WebPackv

 

More...

基于路由表的webrtc流媒体服务器方案

2019-11-23 00:38:57

概述

在开发流媒体服务器时,rtp数据如何在服务器之间转发,对于降低音视频延时和丢包有很重要的影响。

我设想了一种可以降低音视频延时的转发方案。思想来源于IP协议的路由表选路算法。

TCP UDP协议的区别

我们经常说tcp和udp的区别是,tcp是有连接的,udp是无连接的。

 

More...

WebRTC SFU中发送数据包丢失反馈

2019-11-23 00:51:49

WebRTC SFU的职责之一是接收和发送RTCP数据包。RTCP数据包包括关于音频和视频流的不同类型的反馈,并且最重要的RTCP数据包是接收器报告(RR).

RR数据包从媒体流接收器发送到该媒体流的发送者。在SFU的情况下,RR由SFU产生,并发送到媒体流发送器,并且还从每个流接收器发送到SFU。(如图1)。

RR数据包内发送的反馈包括用于计算网络引入的往返时间延迟,抖动和信息丢失。

More...

WebRTC adapter.js是什么以及我们为什么需要它?(一)

2019-11-23 01:00:14

adapter2

这里的主要概念是展示WebRTC与传统VoIP的不同之处。

在传统VoIP中,你有多个供应商实施该规范,希望实现能够相互协作。如果你知道一个VoIP的实现,它也不代表你也能了解另一个VoIP的能力。

WebRTC有所不同,它有很多概念都没有规定,但也规定了HTML5;我的意思是让每个开发人员都可以使用一个API将交互式语音和视频添加到他的应用程序中。

getUserMedia,PeerConnection和数据通道都是WebRTC中指定的API。而这也创造了一个生态系统。传统的VoIP不可能有这样的力量。

但问题是,你可以只将WebRTC API视为一种建议。这是因为直到今天,规范的1.0版本也没有成为现实。WebRTC的浏览器实现更像是同一种语言的方言。你自己说一种方言,你可以听懂另外一种方言,但又不能完全理解。如果说着两种不同方言的人试图在没有耐心或彼此理解的情况下进行交谈,就会发生不好的事情。

这也许就是adapter.js发挥作用的地方。

在我们问自己adapter.js在今天是否需要之前(是的我们需要),我们首先应该花点时间理解它发展过程。

 

More...

WebRTC 入门教程(一)| 搭建WebRTC信令服务器

2019-11-23 01:04:18

作者:李超,音视频技术专家。本入门教程将分为三篇内容,分别讲述信令服务器的搭建、媒体服务器的搭建、Android 端的 WebRTC 应用实现,全文采用开源框架来搭建,适用于大多数入门的开发者。转载请注明:来自 WebRTC 中文网。

如遇到问题,请移步论坛与作者交流。

前言

我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了。

对于 WebRTC 来说,它有一整套规范,如怎样使用它的接口、使用SDP进行媒体协商、通过ICE收集地址并进行连通性检测等等。除此之外,WebRTC还需要房间服务器将多端聚集到一起管理,以及信令服务器进行信令数据交换(如媒体描述信息SDP的交换,连接地址的交抽换等),但在WebRTC的规范中没有对这部分内容进行规定,所以需要由用户自己处理。

你可以根据自己的喜好选择服务器(如 Apache,Nginx 或 Nodejs),我今天将介绍如何使用 Nodejs 来搭建信令服务器。

 

More...

谁是最好的WebRTC SFU?

2019-11-24 13:44:42

首先要注意一个重要的问题——问什么样的SFU是最好的就像问什么样的车是最好的。如果你只想快点,那么你应该买一辆一级方程式赛车,但这不会帮助你送孩子上学。供应商从不对这些类型的测试感到兴奋,因为它把它们的功能归结为几个性能指标。这些指标可能不是其设计标准的主要部分,而且很多时候他们并不是那么重要。特别是对于WebRTC SFU,因为您可以在SFU上加载很多流,所以可能存在有许多弹性,用户行为和成本优化的原因。负载测试也不会深入研究端到端用户体验、开发的易用性,或者所有其他能够成功实现服务的功能元素。最后,像这样发表的报告代表了一个时间点——这些系统一直在改进,所以今天的结果可能会更好。

 

More...

WebRTC中的完美协商(二)

2019-11-24 13:52:42

这是一种有助于操作的API!

令人惊讶的是,这在两端都有效!到目前为止,我们只是以一种方式发送媒体,但是另一端可以通过调用pc.addTrack(track,stream)以相同的方式发送媒体。这里的协商也是自动进行的。在这种情况下,提供者/应答者的角色只是颠倒了。

你可以继续对你的对等连接对象进行你所需的任何更改,API将在下一次JavaScript tick时根据需要重新协商。你再也不必担心协商问题了!

如果两端在同一时间进行更改,那就另当别论了。

那么,Glare问题呢?

“Glare”是指双方同时互相发送offer,破坏了两端的状态机。他们的线路交叉缠绕在一起。就像你和朋友同时开始说话,“你听说了……吗?啊,你先说吧!”计算机都会持续这样做且永远不会停止。除非这台计算机没有神经网络。

所有操作都无法进行了,只能回到手动协商! ——等等,让我们看看是否可以修复这个问题。

Rollback解决远程更改问题

Glare是一个应用问题,因为我们可以用多种方法解决它。例如:如果我们使用外数据通道,使所有更改始终仅来自一端,则可以完全避免Glare问题。但我们使用的这个API很难缠,但我们距离解决问题只有一步之遥了。因此,我们使用Rollback来节省时间,旨在达成完美的协商。

礼貌让行

简而言之,我们将使其中一端“礼让”一些,对另一端说“对不起,您先请!”也就是说,其中一端会拒绝收到的offer。我们很幸运,因为这是“rollback”的作用:

 

More...

webRTC实战总结

2019-11-28 10:19:03
前言
前段时间一直在忙一个基于WebRTC的PC和移动端双向视频的项目。第一次接触webRTC,难免遇到了许多问题,比如:webRTC移动端兼容性检测,如何配置MediaStreamConstraints, 信令(iceCandidate, sessionDescription)传输方式的选择,iceCandidate和sessionDescription设置的先后顺序,STUN和TURN的概念,如何实现截图及录制视频及上传图片和视频功能,如何高效跟踪错误等等。好记性不如烂笔头,特写此文以记之。
移动端兼容性
对PC端来说,webRTC早已被各大浏览器支持了,Chrome 28,FF22,Edge…随着不久之前发布的IOS11也宣布支持webRTC及getUserMedia,webRTC在移动端的应用前景也令人憧憬。
 

More...

WebRTC gateway janus入门:从配置到插件编写

2019-11-28 10:52:13

janus介绍

janus是Meetecho开发的一个WebRTC网关,janus的主要作用就是它可以和你的内网设备和浏览器同时建立连接,并将浏览器发来的音视频数据包如rtp/rtcp包,通过自定义插件转发给你的内网设备,也可以将你发给janus的音视频数据包,加密后转发给浏览器。

这样就完成了内网音视频服务器和外网浏览器的互通。

janus为我们完成了与浏览器建立会话的复杂逻辑,并且提供给我们简单的插件机制来处理音视频数据。

对于PeerConnection连接的建立过程,涉及到复杂的NAT穿透的ICE协议的实现,SDP的交换,DTLS-SRTP的握手和数据包加密发送,数据包接收后解密的复杂逻辑。
janus将我们从与浏览器交互的PeerConnection建立的过程中解脱出来,更专注于音视频业务逻辑。

 

More...

centos下 Janus Server 搭建笔记

2019-11-29 00:11:36

1 简介

Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway;Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 Media Server 服务。
本文主要介绍如何在 Centos 7.0 下搭建起 janus 服务器,实现 janus 官方 Demo 浏览器与 Android APP Demo(janus-gateway-android)之间的音视频通话。

目前浏览器仅支持 FireFox 浏览器,因为 Chrome 浏览器打开音视频采集的话需要 HTTPS 加密访问!

More...

Janus部署总结

2019-11-29 00:28:04

 Janus安装

安装环境为Centos7

#!/bin/sh
yum install -y epel-release && \
yum update -y && \
yum install -y deltarpm && \
yum install -y openssh-server sudo which file curl zip unzip wget && \
yum install -y libmicrohttpd-devel jansson-devel libnice-devel glib22-devel 
opus-devel libogg-devel pkgconfig gengetopt libtool autoconf automake
make gcc gcc-c++ git cmake libconfig-devel openssl-devel #upgrade libsrtp 1.5.4 #wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz #tar xfv v1.5.4.tar.gz #cd libsrtp-1.5.4 #./configure --prefix=/usr --enable-openssl #make shared_library && sudo make install

More...

WebRTC 开发(二)源码下载与编译

2019-11-29 01:49:11

在使用任何工具之前,我们都有必要对工具做大概地的了解,做到粗犷但不失偏颇,这对我们选择工具和切入点是很关键的。本节的标题虽然是 WebRTC 源码下载与编译,但在这之前,我们有必要大概地了解 WebRTC,比如开发机构、免费性、支持的平台、功能亮点。WebRTC 是一个免费开源的跨平台项目,由 Google,Mozilla,Opera 等支持,支持 Chrome,Firefox,Opera 以及 Android 和 iOS 平台,能够给浏览器、手机应用和物联网设备提供了实时互动能力。WebRTC 是一组协议和 API。WebRTC 的起源可追溯到 2011年,经过六年多的时间的发展,在 2017年底 WebRTC 1.0 标准正式出炉。通过 WebRTC 的 Release Notes 可以看到现在最新的 release 版本是 M74 Release Noted。2015年移动端直播的兴起,观众可以在手机端实时看主播的直播,但是观众与主播之间的沟通需要通过发弹幕来进行,这种交流的实时性较差,沟通不便利,观众参与感较差。2016年初移动端上出现了主播与观众之间可以通过实时视频聊天这种方式来沟通,即,视频连麦。那我们想实现这种视频连麦的功能该怎么做呢?现在通过 WebRTC 以及其它一些音视频工具,我们就可以搭建一个视频聊天工具,做到视频连麦,也能做到类似于微信视频群聊。关于各种实现视频连麦的方式,这里就不细说了,放到后面的章节来解说。了解到 WebRTC 是个什么东西后,通常人的心里就会产生一种跃跃欲试的冲动,想试试,那试试就试试呗。“磨刀不误砍柴工”这句话是有道理的,当我们没有经验和没有人传授经验的时候,那我们就要琢磨这句“磨刀不误砍柴工”了。我们要砍柴做饭,找到一把刀拿起就跑到树林里去砍柴,结果发现刀太钝,砍柴真费劲。这个时候,我们就意识到砍柴刀要用磨刀石磨一磨,磨锋利了,就能提升砍柴的效率。我举这个例子,就想说明两点:

 

More...

Webrtc服务器搭建多对多(Janus WebRTC Server) SFU模式

2019-11-29 06:16:54

一、基础资源

  • 操作系统:centos 7.3
  • 服务器IP:内网(192.168.10.17),外网(124.160.xxx.xxx)
  • 域名:webrtc.xxx.com (带https证书)
  • 防火墙开放端口:tcp/udp 3478 3480-3500 7000-9000 443
  • 内网域名绑定:/etc/hosts  => 192.168.10.17  webrtc.xxx.com (由于本机内部访问外网IP不通)
 

More...

从基础概念到进阶,推荐一些 WebRTC 技术文章

2019-12-02 07:35:39

基础概念

WebRTC是如何工作的(第一篇、第二篇、第三篇、第四篇)

WebRTC服务器搭建

实际中的WebRTC:STUN,TURN以及信令(第一篇、第二篇、第三篇、第四篇、第五篇)

WebRTC视频处理流程

 

More...

搭建WebRtc环境

2019-12-02 07:39:14

这次的需求,准备做的是一个类似与QQ视频一样的点对点视频聊天。这几天了解了一些知识后,决定使用HTML5新支持的WebRtc来作为视频通讯。客户端使用支持HTML5浏览器即可。服务器段需要提供两个主要的服务功能,一个是信令服务器(Signaling Server),一个是NAT穿透服务器(ICE Server)。简单的框架图如下:

 

More...

通过WebRTC进行实时通信- 使用RTCDataChannel交换数据

2019-12-05 08:39:48
目录
  • 介绍
  • 概述
  • 获取样例代码
  • 从webcam获取视频流
  • 通过RTCPeerConnection传输视频
  • 使用RTCDataChannel交换数据

我们将学习

  • 如何在 WebRTC端点之间进行数据交换。
 

More...

AndroidRTC & ProjectRTC 实现分析(一)

2019-12-05 10:52:22
 AndroidRTC & ProjectRTC
Android是webRTC的一个开源实现,利用webRTC实现了RTC通话的功能
git仓库地址为 https://github.com/pchab/AndroidRTC
AndroidRTC是android client的实现 要运行这个项目 还需要ProjectRTC来交换信令 
ProjectRTC的仓库地址为 https://github.com/pchab/ProjectRTC

大致的工作原理:
AndroidRTC作为client端 ProjectRTC作为server端
clients首先通过server交换信令 
交换信令后,client分别创建PeerConnection开始connection
 

More...

webrtc截取图像

2019-12-05 10:57:22

webrtc系列——截取图像

  • 一、原理介绍
  • 二、代码实现
  • 三、注意事项

 一、原理介绍

对于webrtc p2p音视频功能,不管是本端视频流还是对端视频流,视频流的源头都是摄像头,终点是都是屏幕(不同的终端需要不同的控件支持)。明白了这一点,每一帧数据需要调用VideoRenderer,然后通过渲染器在控件上进行绘制。

 

More...

编译WebRTC arm Linux库

2019-12-05 10:59:20
环境
1. 编译机 ubuntu14.04
2. WebRTC版本 m56 android分支
  • 1
  • 2

安装依赖(科学上网)

编译WebRTC for Linux可以使用WebRTC for android的代码.
在WebRTC的编译脚本中已经预留了对交叉编译的支持,只需要执行
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm
安装依赖需要编译机能够科学上网
 

More...

WebRTC 连接Linux端和Android端

2019-12-05 11:02:48
WebRTC的通常连接流程:
http://blog.csdn.net/qq_21358401/article/details/79190561
WebRTC SDP协议:
http://blog.csdn.net/qq_21358401/article/details/79341031

连接不同平台的PeerConnection的流程和通常流程没有什么区别.
但很容易遇到这些一个问题:
1. 不支持的音视频编解码器
   WebRTC报错: failed to set video send codecs
   意为不支持收到的SDP里声明的某个视频编码
   我在连接linux和android端时 就出现了android端不支持97和98(编码协议的RTP序号)
   所以需要在设置local或remote的SDP前 修改sdp 去掉不支持的codec
2. 不支持的传输协议
   这个错误常见于和浏览器的peer连接
   浏览器通常不支持 UDP/TLS 这两个传输选项(firefox上发现问题)
   解决方法同样是修改SDP 去除不支持的传输协议
 

More...

移植WEBRTC到ARM平台

2019-12-05 11:19:28

平台UBUNTU16.04

sudo apt-get install build-essential

1、安装ninja

    mkdir -p ~/ninja && cd ~/ninja
    git clone https://github.com/martine/ninja
    cd ninja
    python ./bootstrap.py

 

More...

WebRTC 的三个“陷阱”

2019-12-05 11:12:07
 WebRTC是一个可以使我们在浏览器或移动App中直接进行音频/视频交流的技术,例如Google Hangouts、Facebook Messenger 和Discord。另外,它还可以进行P2P文件共享,处理大量音频数据,实现在线视频会议等等,但是当我们到达WebRTC的底层时,事情变得复杂起来。

关于我们WebRTC APP的故事起始于2018年2月份,形象地来说,一个叫 Redacted 的人在开会时想要我们实现一个具有 redacted 特性的 redacted APP。你可以将它理解为实时视频交流。

 

陷阱1:不理解WebRTC技术。

起初,我们对WebRTC没有任何实际经验。尽管2011年就发布了WebRTC,但是它的想法包含了许多已经建立的领域,例如VoIP交流,网站开发, 视频流等等。

但是WebRTC是一种新技术,它在浏览器中的实现经常变化,你所了解的WebRTC信息经常有可能是过时或者错误的。

因此我的建议是在你开发App之前充分了解WebRTC:
1.你应该了解关于你必须用来开发WebRTC App的服务器的一切.
2.学习建立点对点连接的发信过程。
3.明确媒体是如何处理传输的。
4.有必要时咨询专家。

More...

开箱即用的 WebRTC 开发环境

2019-12-05 11:21:05

在刚刚落幕的 WWDC17 上,苹果为我们带来了一个不小的惊喜 —— 其浏览器内核WebKit将正式支持 WebRTC,而未来基于 WebKit 内核的苹果浏览器,比如macOS High Sierra、iOS 11 中的 Safari 浏览器和Safari 技术预览版 32,都将使用到 WebRTC 技术。

—— 苹果终于入伙 WebRTC

适逢我也正在倒腾一些 WebRTC 的东西,万事开头难,搞事情最怕的就是开始的拦路虎,编译环境、demo 工程、Server 如何部署,这三个问题(尤其是最后一个)想必会浇灭很多朋友的热情之火。经过近两周的不懈奋斗,我总算把这几头拦路虎一一解决,今天我就在这里把这一套开箱即用的 WebRTC 开发环境分享给大家。

注意:这里我假设大家具备 Docker 的基本使用能力,如不具备,请自行搜索相关教程。

 

More...

webrtc编译arm64位平台程序的方法

2019-12-05 11:22:18

1 下源码:

  1.  
    fetch --nohooks webrtc
  2.  
    gclient sync

2 下arm64的编译环境

 

More...

交叉编译ARM平台WebRTC库

2019-12-05 11:23:04

    前两天收到一个经过处理的webRTC源码,主要包含AEC,NS,AGC,VAD四项主要功能。要将其编译成一个ARM平台下库供Android APP使用。

    怎么说呢,相当坑,源码好像是从GitHub上翻出来了,大牛精简抽离后,x86下可至今编译,但ARM下就需要下点功夫了。改起来相当累啊,耗时一个半工作日搞定,成果如下,请品鉴。

configure时为了好看,连接符可能不太标准。ANDROID_NDK的需自行设定。仅有脚本还不行,源码中还需做些微修改,这里就不再上传了,都是基本的编译问题,很简单。

 

More...

如何在Janus中抓取WebRTC流量?

2019-12-05 11:40:35

本文是Janus 项目作者 Lorenzo Miniero撰写的, 2019 年 10 月 25 日他将来到北京 RTC 2019 大会,在「WebRTC Workshop」工作坊中分享WebRTC 服务端开发及 Janus 开发的技巧,并与听众小范围深入交流,名额有限,现在即可报名:2019.rtcexpo.org/(申请限时免费票,还可获得 Workshop 代金券~)

本文摘要:抓取WebRTC流量看起来相对简单,大多数情况下确实是这样:你只需要在其中一人的机器上安装类似tcpdump或wireshark的抓包工具,然后查看产生的文件,大多数情况会是.pcap或.pcapng文件。这些活动对于诊断连接问题或其它与WebRTC相关的问题很有用:实际上,wireshark可以自动检测出STUN,DTLS之类的标准协议,这些是WebRTC PeerConnections所关注的。

本文关键是什么?

抓取WebRTC流量的唯一问题就是,媒体内容会被加密。当检查了STUN连接或DTLS握手之后,这不是一个问题,但是当你想要查看RTP或RTCP包的时候,这将会成为一个问题,它将会被加密成SRTP和SRTCP。实际上,尽管SRTP标题没有被加密,你可以任何形式抓取流量,但是SRTP负载不是,意味着你不能查看它的内容。

大多数情况下你不需要查看内容。正如期待的那样,你依然可以查看加密RTP包的标题,也就是最常被用到的信息。不管怎样,对于RTCP并不能这样说:实际上,一条RTCP信息可能实际上包含不止一个包,并且不存在一个共享的标题。除此之外,查看RTP负载可能会有效。

这意味着抓取加密流量是可行的,但是为了诊断目的抓取无加密数据效果可能更好。不幸的是,无其它帮助下这是不可能的:实际上,WebRTC情况下浏览器经常发送加密数据,即使有一些允许你抓取无加密数据进行测试,但是你还是需要依靠其它工具来获取媒体流,才能进行这项工作。

 

More...

WebRTC内置debug工具,详细参数解读

2019-12-05 11:42:27

 

More...

要做到实时通信的质量监控,有哪些难点?

2019-12-05 11:43:05
本文整理自声网数据平台首席架构师何丰在 RTC 2018 实时互联网大会的演讲内容。他的演讲内容主要包括,如何以数据来衡量实时通信质量,质量透明化背后的数据挑战,以及声网面向开发者免费推出的通信质量诊断分析产品“水晶球”(Agora Analytics)的应用与技术难点。以下为演讲实录。

我们是提供实时音视频服务的。我们希望让开发者们使用实时通信服务,就像使用水、电一样方便。用户的设备接入了我们的云服务后,就可以直接与全球其它国家和地区的用户进行实时的语音或视频互动。

在声网的实时通信云服务上,已经有很多种应用,比如直播与社交,像参加本次大会的 MeetMe 就是美国目前最大的约会社交平台;再比如教育,有很多教育类产品为国内学生与海外老师搭建了实时互动的教学平台;再比如游戏,此前游戏比较流行一起打怪升级,现在很多手游已经集成实时通信的功能,开始变得社交化。在前不久,我们已经开始为小天才儿童手表提供了实时语音、视频的服务,实际上也是 RTC 技术应用于 IoT 领域的一个典型案例。

一、为什么开发者需要实时通信服务的质量监控与质量透明?

 

More...

WebRTC学习与DEMO资源一览

2019-12-08 21:50:22

本人最早接触WebRTC是在2011年底,
那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc/,
但是Android并没有用到它,更没有被浏览器使用。
当时试图在Android 2.3(Gingerbread)高通平台的手机上
用H.264 硬件codec替换掉WebRTC缺省使用的VP8软codec,费了不少劲勉强换掉后效果很差只得放弃。

最近得知Google最新版的Chrome for Android已经支持WebRTC,
应老板的要求搭一个手机浏览器上视频通信的demo,
为此在网上搜集各种资料,发现经过一年多的发展,
国内外研究和使用WebRTC的人明显多起来,可用的demo也很多。
在此做一个笔记,留作日后参考。


目前基于WebRTC的开发其实有两个方向,
一个是基于浏览器的WebRTC应用开发,编程语言主要是JavaScript、HTML等,
这也是WebRTC作为HTML5标准的组成部分原本的目的;

 

More...

TurnServer compile

2019-12-08 22:25:19

Install

1) Requirements

In order to compile TurnServer, you need the followings packages :

  • autoconf
  • automake
  • make
  • gcc
  • libssl-dev
  • libconfuse-dev
  • check
  • doxygen
  • pkg-config
 

More...

Zoom的Web客户端如何避免使用WebRTC?

2019-12-10 04:50:51

Zoom的Web客户端可以在用户不下载它们App的情况下加入会议。Chris Koehncke很高兴能看到它是如何工作的。这确实有效,不必花时间下载App.并且视频质量可以接受,对此我们愉快的讨论了半小时。

打开 chrome://webrtc-internals只看到了getUserMedia被用来获取摄像头和麦克风,但是没有看到RTCPeerConnection的使用。这激起了我的兴趣,它们是如何不用WebRTC进行通话的?

 

More...

Linux下编译webrtc所遇到的坑

2019-12-10 08:07:43
环境:

CentOS release 6.8 (Final) x86_64 x86_64

Linux host.localdomain 4.10.5-1.el6.elrepo.x86_64 #1 SMP Wed Mar 22 14:55:33 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

gcc:

gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 

 

More...

webrtc流媒体转发服务器

2019-12-13 01:00:44

webrtc流媒体转发服务器
定义
难点
建立连接
如何转发媒体流
如何高效转发媒体流
转发后如何保证视频质量
定义
由于webrtc是基于P2P技术的一个协议栈,大多数情况下能满足1-5人的同时并发音视频通讯。但是对于多于5人乃至10、20人的并发,使用P2P技术会造成终端设备无法承受负荷。因此需要将P2P模式改造成能适应大量并发模式,即媒体转发服务(MCU)。

难点
由于webrtc本身是基于P2P的技术,没有MCU的实现。因此需要自己编写MCU的源码。难点有如下几个:

如何与终端设备建立连接
如何接收和转发媒体流
转发如何高效,尽量少的延时
转发后如何保证视频质量

 

More...

webRTC切换指定流

2019-12-17 12:57:55
  1. <div>
  2.  
    音频输入: <select id="audioInput"></select>
  3.  
    音频输出: <select id="audioOutput"></select>
  4.  
    视频输入: <select id="videoInput"></select>
  5.  
    <video id="video" playsinline autoplay ></video>
  6.  
     
  7.  
    </div>
  8.  
     
  9.  
    </body>
  10.  
 

More...

编译webrtc的libjingle_peerconnection_unittest模块

2019-12-28 12:21:00

下面很多程序的安装之后都会要加入到环境变量中,先解释 一下什么叫环境变量。

当我们在cmd下输入命令的时候,例如cp,dir等命令,可以直接运行,而想执行一个打开chrome浏览器的chrome.exe命令时候,就会提示chrome.exe找不到等类似的错误,那是因为chrome.exe并没有被加入到环境变量中。你必须形如这样的方式"C:\Program Files\Google\Chrome\Application\chrome.exe",在cmd下才可以将chrome浏览器打开。

对于cmd下,会解析用户的输入,对于用户输入的命令,它会向系统变量和环境变量中的一个path参数下去寻找,有没有相应的可执行文件,于是如果你想执行svn命令,而svn.exe所在目录却并没有加入到环境变量的path路径中,那么cmd下就会报“命令不存在”的错误。加入命令到环境变量有这样的一个好处,对于一个命令不需要输入它的完整路径,而仅仅需要输入命令的名字就可以了,这可以给我们在cmd下执行命令提供相当大的方便。于是乎当下面安装的某一个程序提示需要加入到环境变量的时候,实际上就是说你在cmd下可以直接输入命令的名字就可以执行目录下的命令。

 

More...

  • 分类目录

    • WebRTC概念与基础 (252)
    • WebRTC项目与应用 (33)
    • WebRTC教程资料 (38)
    • WebRTC开发资源 (13)
    • WebRTC源码分析 (19)
    • WebRTC服务端开发 (27)
    • WebRTC网络与通信 (43)
    • WebRTC编码与解码 (15)
    • WebRTC问题与缺陷 (2)
    • WebRTC-Androd端开发 (2)
    • WebRTC-RFC文档 (1)
    • WebRTC音频处理 (6)
    • WebRTC-Mediasoup (2)
    • FFMpeg音视频处理 (3)
    • H264编解码基础 (10)
    • openCV相关 (1)
  • 最新文章

    • TensorFlow 中的通信机制 ——Rendezvous(二)gRPC 传输
    • 详解|SRT编码器中Rendezvous模式详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • WebRTC - ICE 过程简述
    • Webrtc delay-base-bwe代码分析(2): InterArrival模块
    • 从janus中学习webrtc的ice简单交换过程
    • WebRTC PeerConnection 建立连接过程介绍
    • P2P技术详解(三):P2P技术之STUN、TURN、ICE详解(转载)
    • WebRTC ICE 状态与提名处理
    • licode服务端总结
    • libnice调用流程分析
    • libnice调用流程分析
    • licode 学习总结
    • Licode—基于webrtc的SFU/MCU实现
    • ncnn_example
    • opencv-rtsp运动检测
    • WebRTC 基于GCC的拥塞控制(上)
    • WebRTC 基于GCC的拥塞控制(下)
    • LearningWebRTC: 拥塞控制LearningWebRTC: 拥塞控制
    • WebRTC入门(三)---- 目录结构
    • WebRTC之带宽控制部分学习(1) ------基本demo的介绍
    • webrtc视频流程
    • webrtc nack实现原理
    • webrtc QOS方法一(NACK实现)
    • webrtc源码之nack&&rtx详解
    • webrtc的rtp重传代码分析
    • webrtc QOS方法一(NACK实现)
    • WebRTC基于TransportCC和Trendline Filter的发送端码率估计(Sendside-BWE)
    • WebRTC中丢包重传NACK实现分析
  • 链接

    • WebRTC官网
    • xSky 实验室
    • 树莓派技术圈
    • 声网 Agora
    • WebRTC中文网
    • web性能权威指南
    • WebRTC官网
    • webrtc在线源码
    • webrtc在线源码
    • webrtc
    • webrtc示例
    • LiveVideoStack
    • 雷霄骅(leixiaohua1020)的专栏
  • 开源项目


Powered By xblog Copyright 0xsky.com All Rights Reserved.

Copyright WebRTC.ren All Rights Reserved.