iOS RTMP直播推流学习笔记 & VideoCore源码梳理

最近两年,直播行业真是火遍了大江南北,各种直播平台层出不穷。恰好在微博实习的这段时间负责的就是直播推流这一块,之前对视频和音频处理都不太熟悉,所以正好借这个机会对视频、音频处理这块补习一下。

直播整个流程大体是这样的:

采集(视频/音频)-> 处理(美颜/滤镜)-> 编码 -> 封包 -> 推流 -> 转码 -> 拉流 -> 解码/渲染/播放

VideoCore是著名的RTMP推流库,其主要工作是从视频/音频采集一路到推流,很多第三方推流SDK都是基于VideoCore的。当然VideoCore自带特效处理是可以自定义的,譬如可以自己加入美颜逻辑......

RAC+MVVM实践<二> 完整Demo实践

这篇文章继RAC+MVVM实践<一> 初探 & RAC优化网络层之后,本文的实践是基于上一篇文章中描述的网络层来实践的,所以看本文之前需要先阅读上一篇文章。

尝试新的架构当然不会从老的项目中直接修改,这样风险太大,所以我决定单独写一个小的Demo,这个本来是封装好的网络库,Demo就直接放到这里面了。用小Demo来尝试新的架构设计,然后再在原工程上逐渐引入新的架构。

Demo是实现一个豆瓣用户的搜索功能,Demo的最终效果图是这样的:

Block与self的那点事

记得刚接触循环引用的时候经常写这种逗比代码

__weak UIViewController *weakSelf = self;

后来看开源库源码的时候发现了一种比较好的写法

__weak __typeof(self) weakSelf = self;

再后来接触RAC的时候碰到了更牛逼的写法

@weakify(self);

@strongify(self);

我们都知道UIKit的动画是不需要声明__weak的,从__weak的实现上也能知道使用__weak是有开销的。那么这次就深究一下到底什么情况下要用__weak,什么情况下可以不声明__weak。

ps. 以下所有讨论都在AR......

RAC+MVVM实践<一> 初探 & RAC优化网络层

开发和维护西交Link iOS版至今也有一年多了,随着项目的越来越大,项目变得逐渐混乱,加之当初年幼无知,虽然懂得把网络部分单拎了出来,但是网络部分的架构简直目不忍视。ViewController中的逻辑也变得越来越复杂,想想自己还有不到一年的时间就要毕业了,毕业之后西交Link的维护也必然会移交给他人,为了对以后维护的人负责,我觉得将西交Link进行一次完整的重构。打算把这次整个的重构经历记录下来,以加深自己的理解。

其实我很少会写关于架构设计方面的博客,毕竟觉得自己还比较年轻,所以如有什么不正确的地方欢迎指正。

RAC+MVVM概论

RAC与MVVM想必都不用介绍。越来越多的项目采用了......

iOS 10的那些坑之 Today Widget

iOS 10刚刚发布,就迫不及待的更了beta版,新版的widget这里改动比较大,就料到这里有坑。更完果然崩了...特意查看了一下别家的App,除了系统自带的天气发现基本全都跪了。

刚考完编译,决定放松一下踩个坑。

在网上搜了一下关于这块的东西,发现除了官网少的可怜的就给说了多了一个NCWidgetDisplayMode,别的就什么都没说,应该是还没更好文档吧。好吧,强迫症犯......