2017-10-06 Piasy
我在去年六月份学习了 OpenGL 的一些基本概念,整理了一个 demo 和两篇文章,并在今年六月份复习修正了一番。不久前我进一步向铁蕾兄学习了四种常用 2D 纹理变换的实现思路(以及本文中的其他总结性文字),由于铁蕾兄实在太忙,无暇快速整理成文,因此我就在这里为他代笔了 :) 继续阅读 »
2017-10-03 Piasy
刚加入 Young 团队时,那会儿还有大半年才毕业,我就在思考这个问题,只不过当时更专注于安卓开发领域:安卓开发的核心竞争力是什么?我有一个专门的笔记来记录对这个问题的思考,由于版本迭代,最初的答案已经难以追溯,大抵就是在强调安卓平台的一些技术要点吧。 继续阅读 »
2017-09-22 Piasy
我在今年年初离开 YOLO 加入了一家在流媒体领域具有极深积累的小公司,负责视频群聊 SDK 的开发工作,YOLO 是一款直播 APP,我常戏称这是从技术下游(SDK 使用方)跑到了技术上游(SDK 提供方)。不过事情当然不是这么简单,经过长期的思考和探讨,我最终确认:实时多媒体领域,更宽泛一点来讲,实时视觉、感知的展现,在未来极长一段时间内都存在很大的需求,也存在很大的挑战,所以这将是我长期技术积累的大方向。 继续阅读 »
2017-09-03 Piasy
前面我们分析 WebRTC P2P 连接过程时,在 C++ 代码的世界里徜徉了那么久,其中有各种各样的功能模块,难道大家看着不心动?反正我是很想把它们剥离出来用的,第一个拿来开刀的当然就是 P2P 模块了。 继续阅读 »
2017-08-30 Piasy
前面四篇里,我们分别分析了 WebRTC Android 的视频采集、视频渲染和视频硬编码,最后把相关代码剥离出来形成了一个独立的模块:VideoCRE,并对其进行了极大地内存抖动优化。从本篇起,我们将迈入新的领域:网络传输。首先我们看看 P2P 连接的建立过程,以及 DataChannel 的使用,最终我们会利用 DataChannel 实现一个 P2P 的文字聊天功能。 继续阅读 »
2017-08-26 Piasy
有时候我们需要在 APP 运行时验证当前 APP 是否被篡改,而 SDK 提供方通常也需要验证 APP 是否被授权,今天我们就来探讨一下如何在 native 层实现这一功能,以及在这个过程中的一些要点和技巧。 认证方案 我们先探讨一下有哪些认证方案。 继续阅读 »
2017-08-26 Piasy
NDK
本文的前身是一篇笔记,比较零碎,发布出来是为了让后续的文章可以有一个基本的参考,本文会持续更新。 NDK 的高性能最常见的场景:多媒体,游戏。此外,利用 NDK 还能练习 C/C++,一举两得。 基本概念 shared library, .so static library, .a JNI: Java Native Interface Application Binary Interface, ABI:我们将符号修饰标准、变量内存布局、函数调用方式等跟可执行代码二进制兼容性相关的内容称为程序的 ABI(摘自《程序员的自我修养》); Application Programming Interface, API:API 是源码层面 继续阅读 »
2017-08-11 Piasy
前面三篇中,我们依次分析了 WebRTC Android 的视频采集、视频渲染和视频硬编码,Live Streaming 视频的前段就已经全了。WebRTC 是个宝,初窥这部分代码时就被它的 Capturer 类的设计惊艳到了,仔细品鉴后越发佩服起来,里面简直填了太多坑了,如此宝贝,如不能为我所用,岂非一大憾事!而前三篇的解读,正是为了今天能将其剥离出来所做的铺垫,现在就有请我们今天的主角——VideoCRE, Video Capture, Render and Encode——闪亮登场。 继续阅读 »
2017-08-08 Piasy
前两篇我们分析了 WebRTC 的相机采集和预览,接下来的环节就是编码和传输了。目前我对传输还不熟悉,本篇只关注编码相关的内容,同样也是聚焦于三个问题: 继续阅读 »
2017-07-26 Piasy
在本系列第一篇中,我们分析了 WebRTC-Android 相机采集的实现,本文中我们将分析预览的实现。 有过一定相机开发经验的朋友可能会疑惑,预览还有什么好分析的,不是直接 camera.setPreviewDisplay 或者 camera.setPreviewTexture 就能在 SurfaceView/TextureView 上预览了吗?实际上预览还有更高级的玩法,尤其是需要加上图像处理功能(美颜、特效)时。WebRTC 使用了 OpenGL 进行渲染(预览),涉及下面三个问题: 继续阅读 »