me icon indicating copy to clipboard operation
me copied to clipboard

记录和分享技术的博客

Results 107 me issues
Sort by recently updated
recently updated
newest added

## 参考 - [深度长文:细说iOS代码签名 - xelz's blog](http://xelz.info/blog/2019/01/11/ios-code-signature/) - [[译] 理解 iOS 应用程序的代码签名 (CODE SIGN) 机制 - 知乎](https://zhuanlan.zhihu.com/p/23659530) - [Code Signing探究 - 简书](https://www.jianshu.com/p/a3b50594f46c) - [使用 Developer ID 为 Mac app 签名...

## 意图 假设我们程序分为app和libcalc.dylib两个部分 app/main.c ```c int main() { int x = add(1, 2); printf("1+2=%d\n", x); return 0; } ``` libcalc.dylib/calc.c ```h int add(int a, int b) { return a +...

replay.c (254 lines) ```c #include #include #include #include #include #include #include #include #include typedef unsigned char byte; enum tag_types { TAGTYPE_AUDIODATA = 8, TAGTYPE_VIDEODATA = 9, TAGTYPE_SCRIPTDATAOBJECT = 18 };...

## decode 当client play stream的时候server会发送这个stream的metadata,同时也是flv中的第一个tag,可以看到binary如下: ``` INFO: 0000: 02 00 0a 6f 6e 4d 65 74 61 44 61 74 61 03 00 05 ...onMetaData... INFO: 0010: 77 69 64...

复习一下define语法: 编译一个C程序的第一个步骤被称为preprocessing(预处理)阶段。C preprocessor(预处理器)在源代码编译之前对其进行一系列的文本操作,包括删除注释、插入被#include指令包含的文件内容,定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。(# 开头的指令都是preprocessor专用的) ```c #define name stuff ``` 通过define这条指令后,在预处理 (preprocessing)阶段时,preprocessor就会把name替换成stuff。define和指针一样,用不好就是一地鸡毛,用的好就是yyds。 我们从hello world开始, main.c ```c #define NAME nonocast int main() { return 0; } ``` preprocessing: `gcc -E main.c -o...

学习rtmp协议应以adobe spec为主,网上文章和代码只能作为cookie,不要太当回事情,包括这篇,在读pdf的过程中辅以wireshark,事半功倍。 - H. Parmar, M. Thornburgh [rtmp_specification_1.0](https://github.com/nonocast/me/files/8717533/rtmp_specification_1.0.pdf) December 21, 2012 - Adobe [Video File Format Specification Version 10](https://github.com/nonocast/me/files/8717556/Video.File.Format.Specification.Version.10.pdf) - [amf0-file-format-specification.pdf](https://github.com/nonocast/me/files/8719257/amf0-file-format-specification.pdf) RTMP全称Real Time Messaging Protocol, 我们分别理解Messaging和Real Time。 ## Messaging Spec的chapter...

favor

很多同学,包括网上大量文章,在非农rtmp的时候都是直接拿起wireshark和spec一顿操作,我倒是有个建议不妨站远点去理解rtmp,会有一个非常不同的视角。 ![v2-1dd39f0fe20402a2307b4d7048ffde20_1440w](https://user-images.githubusercontent.com/1457904/168885403-723d9e85-eafb-491a-a3c9-e7cad145f11f.png) - 1993, FutureWave Software在SmartSketch的基础上开发了FutureSplash Animator - 1995, Adobe拒绝了FutureWave的出售邀约 - 1996, Macromedia收购FutureWave,并将其FutureSplash Animator命名为Macromedia Flash 1.0 - 2005, Adobe收购Macromedia, 同时将Flash, Dreamweaver和Fireworks当年的三剑客纳入Adobe旗下 - 2017, 终结 其中最主要的几个概念: - fla and swf: Flash的源文件,只能用Flash打开编辑,编辑后导出swf...

> FLV: Flash Video. FLV Layout: - The FLV header - The FLV file body - PreviousTagSize0 - Tag1 - PreviousTagSize1 - Tag2 - ... - PreviousTagSizeN-1 - TagN -...

Makefile ```make CC=clang ARCH=x86_64 CFLAGS=`pkg-config --cflags librtmp` LDFLAGS=`pkg-config --libs librtmp` SRC=src BUILD=build PROG=$(BUILD)/dump $(BUILD)/read all: $(BUILD) $(PROG) $(BUILD)/dump: $(SRC)/dump.c @$(CC) -arch $(ARCH) $(CFLAGS) $(LDFLAGS) -o $@ $< $(BUILD)/read: $(SRC)/read.c @$(CC)...

## 一档起步 main.c ```c #include #include int main() { int version = RTMP_LibVersion(); printf("0x%06x\n", version); // 0x020300 means 2.3 return 0; } ``` Makefile ```make CC=clang ARCH=x86_64 CFLAGS=`pkg-config --cflags librtmp`...