Piasy

NEVER STOP

OWT Server 集群部署和扩缩容

一转眼 OWT Server 快速入门已经快一年了,最近终于遇到了单台机器无法支撑用户规模的情况,原本我乐观地认为 OWT 自动扩缩容是一件很简单的事情,但实际上这事一点也不简单。 单台机器性能 扩缩容的第一步就是要测量单台机器的性能,为此我按照实际使用场景进行了测试:一个房间两台设备,纯 SFU 模式,视频推流参数为 1280x720 2.5Mbps。 第一次测试是在 AWS m4....

使用 KITE 进行 WebRTC 自动化测试

这两周在着手 OWT Server 的集群部署,为此必须先进行性能测试,原本我只根据一两个房间时的服务器负载情况推算单台机器能抗住多少房间,但忘篱大神一针见血: 一个房间占 6%,不代表三个房间占 18%,这里有个线性能力的问题,几百个线程的,要是能线性了,那也就真的奇迹再现。 但笔记本打开浏览器 tab 或多台手机测试,很容易就触发设备接入网带宽瓶颈,2.5Mbps 推流,实际...

WebRTC H.264 编码的 Profile 和 Level

今天这篇文章的起因是在整理 iOS 屏幕共享代码时,H.264 编码失败,日志里一直在报错 H264 encode failed with code: -12902,去 OSStatus.com 搜索发现这个错误是 kVTParameterErr,即参数错误。 对参数做了一番检查,以及对比了新老版本代码后发现,可能是分辨率的问题,把视频帧的分辨率变小后果然就没问题了。 原来是我测试时使用...

2019,太难了

2019 最大的遗憾,就是 Hack WebRTC 了,不过虽然延期了,但还在稳步进行中,2020 上半年一定要写完,争取能出版。 其他的,不想多说了,该做的还是得做,至于结果,we will see. 人的一生应该这样度过:当回忆往事时,他不会因为虚度年华而后悔,也不会因为碌碌无为而羞愧。 -《钢铁是怎样炼成的》 为了更好的自己,加油!

OWT Server 进阶(一):音视频数据转发和录制流程

今年上半年开始接触 OWT,当时用起来之后整理了 OWT Server 快速入门,其中初步涉及了音视频数据的转发流程。最近在考虑实现客户端的推收流录制,正好之前也遇见了 OWT 录制的一些问题,所以这次就先对 OWT 的音视频数据转发和录制流程探个究竟,一方面可以作为客户端实现的借鉴,另一方面也可以为向 OWT Server 提交 PR 做好准备。 注:本文分析的代码,是 OWT Serv...

基于 Kotlin multiplatform 的多平台 WebRTC SDK

将近两年前,我发布了移动客户端跨平台开发方案探索,初步探索了 Javascript, Dart, Java, C++ 这四种语言用作多平台开发的框架。这两年的时间里,Java (J2ObjC) 的方案比较好地满足了鼎点 Android/iOS/Windows SDK 的需求,痒点虽然有,但尚能忍受,这里列几个典型的痒点: iOS 如果客户想要静态库,那客户也就得准备 J2ObjC 的...

再探 H.264:句法元素详解

两年多前,我发布了我需要知道:H.264 一文,限于篇幅,当时没有对具体的句法元素做任何总结。 原本我想把每一层的各个句法元素简略过一遍的(实际也这么做过),但奈何完全无法涵盖细节,而众多句法元素罗列一遍实在无法脱离堆砌之嫌,所以索性删了个干净。感兴趣的朋友强烈建议阅读原书,或者 H.264 SPEC,至于从事视频编解码相关工作的朋友,则一定要对句法和语义烂熟于胸了。 这次,为了...

OWT Server 快速入门

去年做了一个多平台的(Android/iOS/Windows)基于 WebRTC 的多人音视频通话的项目,客户端基于 WebRTC 最新的客户端代码封装业务逻辑,自己写信令对接 SFU,SFU 最初是对接的 Janus Gateway(所以我才会去给 Janus 提 PR),但 Janus 在中弱网下(ping 4% 丢包 100ms RTT)的表现非常差,一直处于卡死状态。 几经波折,前...

WebRTC Native 源码导读(十五):RTP H.264 封包与解包

之前我在为 janus-pp-rec 增加视频旋正功能一文中简单介绍了一点 RTP 协议的内容,重点关注的是视频方向的 RTP header extension,这次我们更深入的了解一下 RTP 协议的内容,看看 H.264 视频数据是如何封装和解封装的。 其他视频编码格式的封装和解封装大体思路应该是一样的,大家可以举一反三;音频数据的封装和解封装,日后可能我会再整理一篇文章。 注:本文...

WebRTC Native 源码导读(十四):API 概览

第一次看到 WebRTC 这个词是 15 年在一期 Android Weekly 中,但当时完全看不懂它在讲什么,也就没有深究。两年后,我开始搞起 WebRTC,并整理出了一套开箱即用的 WebRTC 开发环境,距今又过了一年多。 按常理,这篇文章要介绍的内容本应最先呈现,但我搞 WebRTC 的路线略微反常,由于没有实际使用的需求,所以我先是研究了不少模块的实现原理。但随着接触到更多内容...