音视频开发工作经验分享 || 视频版

最近有不少朋友加我微信或者在技术群里面咨询:想要转行音视频岗位要怎么做?

俗话说:隔行如隔山。从一个岗位转向另一个岗位,肯定不是三言两语就能说清楚的。

和多数人一样,我之前是从事 Android 客户端开发,后来跳槽到头条做音视频 SDK 开发,参与了抖音和剪映这样的短视频项目,编程语言也从 Java 转向了 C++,技术栈也对应发生了变化。正因如此,也算是完成了一次职业转型,再出去找工作的话,肯定会更偏向音视频底层的开发,而不再是应用层的岗位了。

相对来说,这样的经历对想从事音视频行业的朋友会比较具有参考性,我也很乐意和大家分享这里面的故事,之前还在 B 站上做了一次直播活动,没有参加的朋友可以观看下面的录播内容:

视频地址如下:

https://www.bilibili.com/video/BV1p54y1X7fY

[阅读全文]

老生常谈-FFmpeg 的编译问题轻松搞定

前几天发了一篇 FFmpeg 调用 Android MediaCodec 进行硬解码 的文章,这里面的技术点不算太难,也还是调用 FFmpeg 的常用接口操作,但重点在于 FFmpeg 的版本选择以及编译选项要开启 MediaCodec 才行。

关于 FFmpeg 的编译,是个老生常谈的话题了,很多初学者都会卡在怎么编译动态库 so 的问题上,这其实也是 Android 开发转音视频的一大拦路虎,一行 FFmpeg 代码都没来得及写呢,就得先折腾好久编译问题。

[阅读全文]
FFmpeg 

WebRTC 系列1--创建相机预览

用 WebRTC 创建相机预览,不到 50 行核心代码就可以轻松搞定了。

WebRTC 依赖版本

直接使用官方给的版本就好了,不需要再去额外编译。

implementation 'org.webrtc:google-webrtc:1.0.30039'

后面都会使用该版本做测试的。

[阅读全文]
webrtc 

Unity Shader 光照基础之 Half Lambert 光照模型

Half Lambert 模型(也叫作半兰伯特模型)在 Lambert 模型的基础之上做了一些优化。

在 Lambert 模型中,光照无法到达的区域,比如模型的背面,模型外观通常是全黑的,没有任何明暗变化,而 Half Lambert 模型就是改善这一状况。

回顾 Lambert 模型的计算公式如下:

$c_{diffuse} = (c_{light} \cdot m_{diffuse}) \cdot max (0,n \cdot I)$

[阅读全文]
unity 

Unity Shader 光照基础之Lambert光照模型

在标准光照模型中,可以把光照分为四种:

  • 自发光。常用英文 emissive 来表示,用于描述当给定一个方向时,一个物体表面会向该方向发射多少辐射量,也就是有多少光照出来,一般计算都忽略这个值了。
  • 高光反射,也叫作镜面反射。常用英文 specular 来表示,用于描述当光线从光源照射到模型表面时,该表面会在完全镜面发射反向散射多少辐射量,也是就发出多少光。
  • 漫反射。常用英文 diffuse 来表示,用于描述当光线从光源照射到模型表面,该表面会向每个方向散射多少辐射量,也就是发出多少光。
  • 环境光。常用英文 ambient 来表示,用户描述其他所有间接光照。

用一张图来表示各个光照:

而 Lambert 光照模型主要是处理物体漫反射的。

[阅读全文]
unity