WebRTC
文章平均质量分 75
cgs1999
学习工作中要善于总结,及时总结
展开
-
Chrome调试工具webrtc-internals
文章目录1、打开调试工具2、导出调试信息3、切换获取统计信息的方式4、相关统计信息4.1 获取用户媒体设备请求(`GetUserMedia Request`)4.2 通道(`RTCPeerConnection`)列表4.3 查看每个通道(`RTCPeerConnection`)的信息4.3.1 查看事件信息4.3.2 查看统计信息4.3.3 统计数据说明`RTCPeerConnection (peer-connection)``RTCTransport_0_1 (transport)``RTCCertifi原创 2020-11-30 10:40:13 · 10081 阅读 · 9 评论 -
Emscripten简介及初体验
文章目录1. Emscripten简介1.1 诞生背景1.2 什么是Emscripten2. 安装Emscripten2.1 前置条件2.2 下载安装过程3. 示例4. 参考资料1. Emscripten简介1.1 诞生背景Web 技术突飞猛进,但是有一个领域一直无法突破 ---- 游戏。游戏的性能要求非常高,一些大型游戏连 PC 跑起来都很吃力,更不要提在浏览器的沙盒模型里跑了!但是,尽管很困难,许多开发者始终没放弃,希望让浏览器运行 3D 游戏。2012年,Mozilla 的工程师 Alon原创 2020-10-12 17:25:54 · 18051 阅读 · 8 评论 -
WebAssembly原理及入门
文章目录1. WebAssembly是什么2. 为什么需要 WebAssembly3. WebAssembly 原理4. 编写 WebAssembly4.1 AssemblyScript 初体验4.2 为什么选 AssemblyScript 作为 WebAssembly 开发语言4.3 接入 Webpack 构建4.4 WebAssembly 相关文件格式5. WebAssembly 相关工具5.1 WebAssembly JS API5.2 WebAssembly 调 JS6. 不止于浏览器6.1 直接执原创 2020-10-12 17:19:54 · 2885 阅读 · 1 评论 -
浏览器支持H.265解码总结
文章目录1. 引言2. 问题3. 解决方案3.1 方案1:开发自己的浏览器~~3.2 方案2:前端JS解码+canvas显示~~~~3.3 方案3:前端WebAssembly转码+video显示~~3.4 方案4:前端WebAssembly解码+canvas显示3.5 总结4. 相关资料5. 参考资料1. 引言项目要求在浏览器上支持H265视频,但即使当前最新的Chrome 85.0.4183.121版本也还不支持H265的解码。那么,在浏览器上能不能解决H265的解码及显示呢?答案是肯定的。2.原创 2020-09-28 14:08:39 · 19939 阅读 · 30 评论 -
【转】SFU级联解决方案——Licode
文章目录1. 引言2. SFU2.1 SFU简介2.2 单SFU问题2.2.1 人数限制2.2.2 地理分布,就近接入2.3 解决方案:级联SFU2.3.1 解决人数限制2.3.2 解决地理分布与就近接入问题3. Licode4. 基于Licode级联实现4.1 单节点Docker化4.2 级联间去加密4.3 其他级联优化4.4 全球化5. 参考资料1. 引言随着在线教育行业的兴起, 许多人把目光投向了国外市场,而如何搭建全球化的音视频网络就成为了其中的关键问题。百家云研发工程师陈聪详细介绍了如何利用L转载 2020-09-27 11:14:15 · 2472 阅读 · 0 评论 -
【转】SFU级联解决方案——Jitsi
1. 引言部署WebRTC的媒体服务器有两个主要挑战,从一台服务器开始扩展,并且优化参加会议的用户的媒体延迟。尽管简单的碎片化方法像‘将X会议中的所有用户发送到服务器Y’容易实现水平扩展,在用户体验中,媒体延迟是一个关键因素,在这方面,此方法还远远不能达到最优效果。将视频会议分布在距离用户很近的许多服务器上并且保持相互连接,同时解决了两个问题。本文深度描述了级联SFU存在的问题并且展示了解决方法和遇到的其它问题。实时交流的App非常依赖网络环境,例如吞吐量,延迟,丢失。低比特率导致低视频质量,导致了转载 2020-09-27 10:55:48 · 2649 阅读 · 1 评论 -
【转】WebRTC多人音视频解决方案
文章目录1. 引言2. 解决方案2.1 Mesh解决方案2.2 Mixer解决方案2.3 Router解决方案2.4 三个解决方案的流量对比3. 应该使用哪种架构?4. 参考资料1. 引言众所周知,WebRTC非常适合点对点(即一对一)的音视频会话。然而,当我们的客户要求超越一对一,即一对多、多对一设置多对多的解决方案或者服务,那么问题就来了:“我们应该采用什么样的架构?” 。简单的呢有人会考虑copy多个p2p就完成了多人之间的会话,可并没有考虑到到来的问题:cpu、内存、尤其是流量问题;传统的解决方转载 2020-09-27 10:37:34 · 1267 阅读 · 0 评论 -
NAT与NAT穿越学习总结
迁移自【ITEYE】 https://www.iteye.com/blog/cgs1999-19940721、引言网络地址转换(Network Address Translation,简称NAT)是一种在IP分组通过路由器或防火墙时重写源IP地址或/和目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。20世纪90年代中期,NAT是作为一种解决IP...原创 2020-04-05 22:49:07 · 734 阅读 · 0 评论 -
Mediasoup源码分析(1)——架构分析
1. 设计架构图Worker一个Worker代表着一个运行在单核CPU上并处理Router实例的mediasoup C++子进程;RouterRouter用于注入、选择和转发通过Transport实例创建的媒体流;TransportTransport将终端与MediaSoup Router连接起来,并通过在其上创建的Producer和Consumer实例实现双向媒体传输,...原创 2019-08-29 11:09:48 · 7697 阅读 · 0 评论 -
Janus源码分析(7)——videoroom分析
1. 运行效果https://janus.conf.meetecho.com/videoroomtest.html?simulcast=true包含:Simulcast功能视频高等质量(分辨率:1280*720,带宽1.5M+)视频中等质量(分辨率:640*360,带宽500K左右)视频低等质量(分辨率:320*180,带宽150K左右)2. VideoRoom插...原创 2019-08-29 11:00:36 · 4188 阅读 · 5 评论 -
Janus源码分析(5)——echotest分析
1、运行效果图Echo测试演示的是发送给服务器网关的音频和视频,服务器会回传给你,效果如下图所示:2、代码分析2.1 代码结构2.2 源码分析2.2.1 创建线程在janus = new Janus()时,调用Janus(gatewayCallbacks)在其中有函数createSession,并且传入下面的回调函数:createSession创建请求,成功建立一次httpAP...原创 2019-07-03 16:29:01 · 2454 阅读 · 7 评论 -
Janus源码分析(6)——Streaming分析
1. 运行效果图Streaming演示的是播放视频或音频流,可用于网络直播或转播,效果如下图所示:2. Streaming插件API分析2.1 会议配置信息及API分类1、插件配置文件位置 conf/janus.plugin.streaming.jcfg,流配置格式如下:stream-name: { type = rtp|live|ondemand|rtsp rtp = s...原创 2019-07-08 18:53:55 · 3874 阅读 · 0 评论 -
Janus源码分析(1)——源码结构
1. 模块结构分5个模块:核心 Core插件 Plugins传输 Transports事件处理 Event Handlers实用工具 Tools and utilities2. 源码分析2.1 核心模块(Core)包含:协议DTLSICERTCPRTPSCTPSDP其它请求认证、配置文件解析、日志、事件处理通知、录音录像、抓包…等2.2...原创 2019-06-24 17:50:04 · 5814 阅读 · 4 评论 -
Janus源码分析(4)——信令交互过程
1. Janus插件交互流程Janus中所有插件都遵循以下基本数据流程:客户端发送create创建一个Janus会话;Janus回复success返回Janus会话句柄;客户端发送attach命令在Janus会话上attach指定插件;Janus回复success返回插件的句柄;客户端给指定的插件发送message进行信令控制;Janus上的插件发送event通知事件给客户端;客...原创 2019-07-02 11:31:52 · 7001 阅读 · 14 评论 -
最新libsrtp库的编译与测试方法
1. 环境在 Ubuntu 16.4.5 TLS 版本中编译和测试通过。下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y2. 编译及安装2.1 下载源码git clone https://github.com/cisco/libsrtp.git2.2 进入源码目录cd libsrtp2.3 配置配...原创 2019-04-30 10:21:22 · 8599 阅读 · 0 评论 -
最新libwebsockets库的编译与测试方法
1. 环境在 Ubuntu 16.4.5 TLS 版本中编译和测试通过。下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y另外,还有一些编译的依赖库,相关安装命令如下:sudo apt-get install cmake -ysudo apt-get install openssl -ysudo apt-ge...原创 2019-04-30 10:26:02 · 9067 阅读 · 0 评论 -
Ubuntu中安装部署Janus
1. 环境在 Ubuntu 16.4.5 TLS 版本中编译和测试通过。(CentOS下的部署可以参考《Janus部署总结》一文)下载最新的源代码需要git,若没有安装git可以使用下面命令进行安装:sudo apt-get install git -y使用下面命令进行安装lua库:sudo apt-get install liblua5.3-dev编译运行 Janus Serv...原创 2019-05-06 14:06:20 · 7972 阅读 · 12 评论 -
搭建Janus的HTTPS环境
1、前言基于安全隐私问题,现在Webkit内核的浏览器共享视频、语音、经纬度坐标等必须通过HTTPS形式访问!Chrome浏览器使用的是Webkit内核,所以很不幸,如果你要在最新的Chrome浏览器上通过HTTP形式分享本地的视频、语音,就会出现如《Chrome浏览器调用摄像头失败》 中所述的问题。那么,如何解决呢?答案很简单,就是将应用的HTTP服务方式改造成HTTPS方式,本文将就...原创 2019-05-06 14:20:17 · 9270 阅读 · 18 评论 -
Ubuntu中搭建ICE服务器(Coturn)
1. WebRTC的P2P穿透WebRTC的P2P穿透部分是由libjingle实现的.步骤顺序大概是这样的:尝试直连.通过STUN服务器进行穿透无法穿透则通过TURN服务器中转STUN服务器比较简单. 网上也有很多公开的STUN服务器可以用于测试,例如: stun.ideasip.com在WebRTC的P2P应用中,使用公开的STUN服务器时,有时响应比较慢,这就需要自己搭一个...原创 2019-05-06 14:37:08 · 9097 阅读 · 20 评论 -
开启 Chrome 的Simulcast功能
1. 最新版本已默认支持Chrome 73.0.3664.3及以后的版本已支持VP8、VP9及H264的Simulcast编码2. 老版本的开启方法老版本指的是Chrome 73.0.3664.3以下版本,可以通过添加Chrome启动参数来开启Simulcast功能,参数如下所示--force-fieldtrials=WebRTC-H264Simulcast/Enabled/两种方式...原创 2019-05-07 09:47:18 · 1478 阅读 · 0 评论 -
Ubuntu中安装部署Intel CS WebRTC
0、引言研究Intel CS WebRTC时,需要搭建环境,按官网或网上找到的文档进行搭建都发现有各种问题,由于相关资料比较少,不好进行排查解决。本文将最终部署成功的部署进行说明,希望对后来者能有所帮助,少踩些坑。1、环境要求组件版本要求OSCentOS* 7.4, Ubuntu 14.04/16.04 LTSNode8.11.* (推荐8.11.1)M...原创 2019-06-03 14:58:55 · 1749 阅读 · 4 评论 -
Janus源码分析(2)——主入口main
1. 主入口main位置主入口main函数位于 janus.c 文件中特别说明:通过 Makefile.am 创建依赖文件:cmdline.h、cmdline.c、version.c版本号、编译时间及Git源码版本:janus_version、janus_version_string、janus_build_git_time、janus_build_git_sha等相关信息是在编译时...原创 2019-07-01 15:16:16 · 3339 阅读 · 0 评论 -
Janus源码分析(3)——请求处理过程
从源码,分析Janus内部代码一个请求从接收到处理的完整过程及对应代码。原创 2019-07-02 11:21:58 · 6023 阅读 · 1 评论 -
Ubuntu中安装部署Mediasoup
1. 准备首先,找一台linux服务器,推荐用Ubuntu,安装最新版本的NodeJS和NPM,安装方法可参考 《安装最新版NodeJS和NPM》 一文。安装部署过程需要下载GitHub上的源码,故需要先安装好git,使用下面命令安装gitsudo apt-get install git -y2. 安装Mediasoup使用下面命令安装mediasoupsudo npm instal...原创 2019-04-30 10:05:28 · 8654 阅读 · 21 评论