YUV格式介绍

何为YUV

RGB相信大家都明白是什么,也知道怎么用RGB来表示一个颜色。YUV也可以用来表示颜色,可以从RGB中得到,为得是使得亮度跟颜色分开,这样可以兼容黑白电视(只需显示Y的程度)。现代采像一般是把采集的图像信号经分色、分别放大后得到RGB,再经过矩阵转换电路取得亮度信号Y和两个色差信号R-Y(U)、B-Y(V),最后发送端将亮度和发送端三个信号分别进行编码,用同一信道发出去。YUV也是分别需要1个字节来表示Y、U、V,但是可以方便减少采样而使得画质不会太大受损,这样可以大大的减少存储空间。

Mehr lesen

颜色

参考:

https://learnopengl-cn.github.io/02%20Lighting/01%20Colors/

Mehr lesen

no-title

title: 打印堆栈信息,保存崩溃现场
date: 2017-01-31 13:11:57
tags: [iOS]

程序崩溃的时候需要上报崩溃堆栈,以及每个线程的堆栈信息。方便查找bug

如何捕获崩溃

NSSetUncaughtExceptionHandler

注册 catchCrash 异常。

Mehr lesen

mac os开启php+Apache+MySQL环境搭建

mac os 10.12 配置apache php mysql

启动apache

用命令启动/停止/重启

Mehr lesen

flv打包的h.264格式

FLV格式非常简单,头信息数据量很少,适合网络传输,因此被广泛的应用。

H264 NALU结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    h264 NALU:  0x00 00 00 01 | nalu_type(1字节)| nalu_data (N 字节) | 0x00 00 00 01 | ... 
起始码(4字节) 类型 数据 下一个NALU起始码
H264 NALU固定以 0x00 00 00 01为起始,NALU_data部分不会出现这个起始码;
在找到下一个起始码之前,当前NALU数据长度不知;
NALU_type 1字节,定义为:1比特禁止位 | 2比特 重要性指示位 | 5比特 类型
固定为0 11重要 不能少 1-12 由h264使用
00不重要 可以丢弃
几个常用Nalu_type:
0x67 (0 11 00111) SPS 非常重要 type = 7
0x68 (0 11 01000) PPS 非常重要 type = 8
0x65 (0 11 00101) IDR帧 关键帧 非常重要 type = 5
0x41 (0 10 00001) P帧 重要 type = 1
0x01 (0 00 00001) B帧 不重要 type = 1
0x06 (0 00 00110) SEI 不重要 type = 6

```


## FLV tag

前面讲过FLV文件就是由无数个Tag组成的,Tag有Video Tag, Audio Tag和Script Tag.
A/V Tag里面存储的就是音视频编码数据,Script Tag里面是一些码流描述信息。
理论上来说,不解析Script tag也可以对A/V Tag完整解码。tag的固定格式是:
Tag Type(1字节) | DataSize(3字节) | TimeStamp(3字节) | TimeStampExtended (1字节)| StreamID (3) | ...
下面将分别介绍各种NALU封到tag里面的结构。

### 一般Video tag

Mehr lesen

NSObject与id的区别

id is a special keyword used in Objective-C to mean “some kind of object.” It does not contain isa pointer(isa, gives the object access to its class and, through the class, to all the classes it inherits from), So you lose compile-time information about the object.

Mehr lesen

C++虚函数、纯虚函数

Mehr lesen

xcode工程嵌入工程

注意点:

1、先创建静态工程 .a工程 比如说目录是
~/testlib

2、在.a工程目录下创建demo路径并且创建demo工程。目录是:
~/testlib/demo/testlibdemo

3、打开demo工程,把静态库工程拖进demo工程。设置

Mehr lesen

linux命令备忘.md

查找文件

1
find . -name "*.log" -print

Mehr lesen

cocoapod库制作

构建共有pod

创建pod工程

1
pod lib create HostSetting

Mehr lesen