OBS 源码分析第一篇--踏石留印

作者介绍:况鹰,腾讯android高级工程师,目前主要负责手Q个性化增值及企鹅电竞pc助手业务开发与性能优化,在android和pc端都有丰富的经验,闲暇之余比较爱折腾和研究各种新技术。

在直播如此火热的 2016 年,OBS 作为一名元老级开源组件在主播和开发面前继续展示着它常青的魅力。自己接触其源码小半年,发现国内的分析篇要么篇幅太短文不达意,要么内容太杂枯燥难懂,总是不令人满意。失望之余便想尝试挑战自己的审美观来分析一下这位美人,今天就首先来分析一下美人的个人状态。

1、身世:OBS 的爸爸是 jp9000,自出生起发展截止目前主要分为两个阶段,第一代犹如未成熟的少女尚未绽开,在设计和代码上都存在较多的缺陷,追求者基本来自叫 Windows 的城市。随着工程的膨胀导致后期维护成本变高,jp9000 也不满足其发展,便对其进行了整容重构,工程的线条变得更加明朗婀娜,追求者也多了来自 Mac 和 Linux 的城市,人数直接翻了两倍多,而且在继续增长。

2、皮肤变身:第一版用的是底层 winapi 写的窗口,所以大家会发现皮肤上面有很多痘痘:

基本一个控件一个句柄,第二版由于兼容 Mac 和 Linux,嵌入了全球著名皮肤精华水 QT,像战网、YY、WPS、优酷客户端、Dropbox 等都用的这款牌子,OBS 也紧跟潮流,成为了又一名「形象代言人」。

3、琴棋书画:OBS 之所以吸引人,主要根源于其具备极多的才艺,可以极大的满足大家的视听,我们来尝试梳理一下套路:

  • 琴 - 音频编码:第一代用的 libfaac,第二代迁移到 ffmpeg,录制主要依靠就是 ffmpeg,利用管道跨进程写文件录播;
  • 棋 - 视频编码:软编 x264、硬编 qsv、硬编 nvenc,其中 qsv 主要用的 libmfx,属于 inter 流派,nvenc 顾名思义就是 2016 股民们熟悉的 nvidia 流派,相对于 cudaenc 在h264 编码方面性能更优 ;
  • 书 - 推流:第一代和第二代都用了鼎鼎大名的 rtmp 库,有推流地址和密钥便可以让所有主播上「电视」,斗鱼、熊猫、战旗、B站、全民直播都可以用这种方式推送;
  • 画 - 渲染引擎:第一代只支持 dx,第二代支持分别封装了 dx 和 opengl ,shader 渲染脚本可以共用一份无差使用,语法用的 hlsl,在 opengl 渲染时包装内会转换成 glsl,了解原理后可以非常方便的嵌入各种 effect,可以加入更多的特效。

4、杂耍:第二版由于追求者众多,每个人都想在 OBS 上留下自己的印记,OBS 除了学会了展示窗口、显示器、图片、幻灯片、视频、游戏、文字之外,还可以展示浏览器(基于 cef)、vlc 视频等。在第二版所以这些印记可以方便替代升级,希望你也能鼓足勇气去贡献一把。

第一篇先简单带领大家了解 OBS 美女的「个人情况」,下一篇我将为大家介绍 OBS 的五官构成 - 代码架构组成。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

5 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

码农的烦恼

摘要:对于码农来说,永远没有完美与满意:怎样完美的代码,都跟不上技术更新的节奏;怎样的尽心尽力,都满足不了客户的要求。想仰天长啸,抬抬头才发现还在“小黑屋”里与...

2875
来自专栏阮一峰的网络日志

每周分享第 22 期

2008年,英国摄影师大卫·斯莱特(David Slater)来到印度尼西亚,拍摄一种珍贵的猕猴。他把照相机固定在三脚架上,放在丛林中,然后躲在远处偷偷观察猕猴...

772
来自专栏知晓程序

周末聚会一定用得上!有了这款小程序,人少也能痛快狼人杀

狼人杀,一场欺骗、谎言、怀疑、背叛、诱导言论与思考的艺术......在这场智力、逻辑与口才的博弈之中,体制外的法官就是上帝。他洞悉一切、掌控全局,为玩家们尽心营...

762
来自专栏java思维导图

一个女程序媛征男友的需求说明书

java思维导图 xmind导图配合精美文章,可视化学习,让java不再难懂。 前 言 常听人说程序员的生活枯燥为人刻板,其实这是你不懂程序员。代码之外,生活...

2635
来自专栏编程坑太多

程序员该如何护肤?

1213
来自专栏闰土大叔

听说尤雨溪在开发vue4.0?是谁煽动了前端圈的焦虑情绪

今天前端圈里被一张P图搞得好热闹,最初只是QQ群里一个冒名尤雨溪的前端网友发了一句调侃的话,原话截图如下:

1242
来自专栏机器人网

看黑客老爸怎么把3D打印机能改成桌上冰球机器人

Jose Julio 是一名黑客,同时作为机器械爱好者,他也有过一些机器人项目的经验。话说有一次 Julio 想做一部属于自己的 3D 打印机,但当他从 3D ...

2448
来自专栏逸鹏说道

【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划

发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!”...

33312
来自专栏量子位

谷歌新推三款AI拍照App:短视频变漫画、自动抓拍、暴走风格剪辑

原作 Alex Kauffmann,谷歌研究中心的小哥哥 Root 编译自 Google Research Blog 量子位 出品 | 公众号 QbitAI 现...

2575
来自专栏互联网杂技

行走在消失中的5种编程语言

不少编程语言的寿命很长,因为企业和机构往往不愿意花费时间和资源去用新语言重写关键任务软件,因此一些重要系统上经常会有很多运行了数十年高龄的编程语言写的代码,例如...

33113

扫码关注云+社区