Cmb Blog

一生想做浪漫极客

计算机图形学总结

Summary of Computer Graphics

变换矩阵 摘要 变换矩阵 (Transformation Marices) 在图形学中的重要性不用多说,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到。同时在投影 (projection) 变换的时候也有很多应用,本文将会介绍一些简要的变换矩阵。 2D线性变换 我们将如下图所示的简单矩阵乘法定义为对向量 $(x,y)^T$ 的线性变换。 \[\begin{bmatrix}{...

SDP 会话描述协议

Session Description Protoocol

SDP 简介 SDP(Session Description Protoocol)是一种通用的会话描述协议,主要用来描述多媒体会话,例如会话声明、会话邀请、会话初始化等。 WebRTC 主要在连接建立的时候使用到 SDP 协议,用于连接双方通过信令服务来交互会话信息的一种协议,包括解码器、网络传输协议等。 协议格式 SDP 协议格式非常简单,就是多行的 key-value 组成 &...

直播协议

Live Stream Protocol

背景 目前推流一般采用 RTMP,拉流常见的协议却为三种,分别是:RTMP、HLS、HTTP-FLV,当然还有比较火的 WebRTC 采用的 RTP/RTCP 。工作以来一直都没有好好的总结,借此文章来归档一下直播协议。 RTMP 1 介绍: RTMP 是 Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于 TCP,是一个协议族,...

浅谈 IM SDK 的设计

IM SDK

由于公司向社区化转型,所以对 IM 的需求开始加大了,IM SDK 开发迫在眉睫,以下就浅谈一下本人在写 IM SDK 时的一些心得和见解,大神们勿喷,哈哈😆 IM 总体结构: 通用 IM 将用户信息、好友关系、群组关系这些强业务相关数据留给业务方来维护,通用 IM 不对这些数据做存储和同步。 其实这个结构是后端设计的,我觉得发送和接收都应该走长连接的,唉😔 消息上行: ...

iOS 多媒体-音频队列

ios-media-audioqueueservices

介绍 要在 iOS 设备上播放和录制音频,苹果推荐我们使用 AVFoundation 框架中的 AVAudioPlayer 和 AVAudioRecorder 类。虽然用法比较简单,但是不支持流式;这就意味着:在播放音频前,必须等到整个音频加载完成后,才能开始播放音频;录音时,也必须等到录音结束后,才能获取到录音数据。这给应用造成了很大的局限性。为了解决这个问题,我们就需要使用 Audio...

iOS 多媒体-录音

ios-media-avaudiorecorder

介绍 AVFoundation 中使用 AVAudioPlayer 实现音频播放功能是非常简单的。同样在 AVAudioRecorder 实现音频录制功能也是非常简单的。AVAudioRecorder 同其用于播放音频一样,构建于 Audio Queue Services 之上,是一个功能强大且代码简单易用的 Objective-C 接口。我们可以在 Mac 机器和 iOS 设备上使用这个...

iOS 多媒体-音频会话

ios-media-avaudiosession

介绍 事实上上面的播放器还存在一些问题,例如通常我们看到的播放器即使退出到后台也是可以播放的,而这个播放器如果退出到后台它会自动暂停。如果要支持后台播放需要做下面几件事情: 1.设置后台运行模式:在 plist 文件中添加 Required background modes ,并且设置 item 0=App plays audio or streams audio/video using...

iOS 多媒体-音乐

ios-media-avaudioplayer

介绍 基于 System Sound Services 的弊端,如果我们想播放比较大的音频就需要用到 AVFoundation 来实现了,AVFoundation 中使用 AVAudioPlayer 来实现音频播放,AVAudioPlayer 可以当成是一个播放器,可用它来控制进度、音量、播放速度等参数。 AVAudioPlayer 属性 说明...

iOS 多媒体-音效

ios-media-audiotoolbox

介绍 iOS 中音频播放其实可以分为 音效播放 和 音乐播放,音频播放 一般指的是很短的音频,对于这类音频不需要进行进度、循环等控制。音乐播放 一般指的是较长的音频,通常是主音频,对于这些音频的播放通常需要进行精确的控制。对应的在 iOS 中播放这两类音频分别使用 AudioToolbox 和 AVFoundation 。 音效 AudioToolbox 是一套基于 C语言 的框架,使...

load 和 initialize

load-initialize

load load 会在类或分类被添加到 runtime 时调用。并且只会被 runtime 调用一次。 如果子类没有实现,父类的 load 方法也不会被再次调用。 load 的调用顺序 链接的 framework 自己的 image C++ 静态初始化方法,具有 __attribute__(constructor) 修饰的函数 链接到你的 image 其它: ...