摘要:现今移动直播技术上的挑战要远远难于传统设备或电脑直播,其完整的处理环节包括但不限于:音视频采集、美颜/滤镜/特效处理、编码、封包、推流、转码、分发、解码/渲染/播放等。 直播常见的问题包括 主播在不稳定的网络环境下如何稳定推流? 偏远地区的观众如何高清流畅观看直播? 直播卡顿时如何智能切换线路? 如 阅读全文
直播技术细节3
2016-11-14 15:55 by JG2014, 328 阅读, 0 推荐, 收藏, 编辑
摘要:解析优化 参见之前介绍的DNS过程,如下图: 基于可控和容灾的需要,移动端代码一般不会hardcode 推流、播放的服务器IP地址,而选用域名代替。在IP出现宕机或网络中断的情况下,还可以通过变更DNS来实现问题IP的剔除。而域名的解析时间需要几十毫秒至几秒不等,对于新生成热度不高的域名,一般的平均 阅读全文
直播技术细节2
2016-11-13 22:57 by JG2014, 372 阅读, 0 推荐, 收藏, 编辑
摘要:国内常见公开的直播协议有几个:RTMP、HLS、HDL(HTTP-FLV)、RTP,我们来逐一介绍。 RTMP协议: 是Adobe的专利协议,现在大部分国外的CDN已不支持。在国内流行度很高。原因有几个方面: 1、开源软件和开源库的支持稳定完整。如斗鱼主播常用的OBS软件,开源的librtmp库,服 阅读全文
直播技术细节1
2016-11-13 22:52 by JG2014, 355 阅读, 0 推荐, 收藏, 编辑
摘要:qq:564702640 I帧表示关键帧。你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成。(因为包含完整画面) P帧表示这一帧跟之前的一个关键帧(或P帧)的差别。解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差 阅读全文
微信读书 iOS 性能优化总结
2016-11-08 18:07 by JG2014, 705 阅读, 0 推荐, 收藏, 编辑
摘要:微信读书作为一款阅读类的新产品,目前还处于快速迭代,不断尝试的过程中,性能问题也在业务的不断累积中逐渐体现出来。最近的 1.3.0 版本发布后,关于性能问题的用户反馈逐渐增多,为此,团队开始做一些针对性的性能问题优化。本文将从发现问题、解决问题和预防问题三个方面进行总结。 如何发现性能问题 不同于一 阅读全文
直播-拉流和推流概述 转载
2016-10-20 11:18 by JG2014, 13469 阅读, 0 推荐, 收藏, 编辑
摘要:拉流(播放): 根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据; 解析二进制数据,从中找到相关流信息; 根据不同的封装格式(如FLV、TS)解复用(demux); 分别得到已编码的H.264视频数据和AAC音频数据; 使用硬解码(对应系统的API)或软解码(FF 阅读全文
iOS异常捕获
2016-09-16 20:08 by JG2014, 756 阅读, 0 推荐, 收藏, 编辑
摘要:文章目录 一. 系统Crash 二. 处理signal 下面是一些信号说明 关键点注意 下面是一些信号说明 关键点注意 下面是一些信号说明 关键点注意 三. 实战 四. Crash Callstack分析 – 进⼀一步分析 五. demo地址 六. 参考文献 前言 今天在ios高级群,有朋友问到iO 阅读全文
Objective-C Runtime 运行时之四:Method Swizzling
2016-09-09 18:10 by JG2014, 168 阅读, 0 推荐, 收藏, 编辑
摘要:理解Method Swizzling是学习runtime机制的一个很好的机会。在此不多做整理,仅翻译由Mattt Thompson发表于nshipster的Method Swizzling一文。 Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行 阅读全文
App启动加载广告页面思路
2016-05-23 15:34 by JG2014, 2649 阅读, 0 推荐, 收藏, 编辑
摘要:需求 很多app(如淘宝、美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页。今天我们就来开发一个广告页面,效果如下。 效果图.gif 效果图.gif 思路 1.广告页加载思路。广告页的内容要实时显示, 阅读全文
关于CoreData和SQLite多线程访问时的线程安全问题
2016-05-20 11:13 by JG2014, 483 阅读, 0 推荐, 收藏, 编辑
摘要:数据库读取操作一般都是多线程访问的。在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱。IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两者都需要设置线程安全,在这里以FMDB来解释对SQLite的线程安全访问。 一:FMDB的线程安全: 阅读全文