0%

介绍

原文

并发是多个事情同时发生的概念。随着 CPU 核数的增加,开发者需要新的方式去利用它们。尽管像OS X和iOS这样的操作系统能够并行地运行多个程序,但这些程序大多在后台运行,执行的任务几乎不需要持续的处理器时间。当前的前台程序才是既能吸引用户的注意力,又能让计算机忙碌的程序。如果一个程序有很多任务要执行,但只保持一小部分可用的内核被占用,这些额外的处理资源就被浪费了。

查找编解码器

avcodec_find_decoderavcodec_find_encoder 主要是查找 FFmpeg 的解码器和编码器。

API处理套路:

  • 方法一般返回值小于0表示失败。
  • 使用上下文连接多个API。
    • 上下文包含大量相关信息。
    • 上下文一般对应的创建与释放方法,且注释里有说明,例如:open-close、alloc-free。
  • 要复用结构体时,调用对应的unref方法,以重置信息。
  • 所有压缩包、未压缩帧操作都要循环操作。

与C语言交互发生在使用一些C语言编写的API上。C语言的语法会桥接到Swift中对应的语法中。Swift能很好地与C语言交互。

类型

KVO用于逻辑隔离对象之间的监听,支持一对一和一对多的属性监听。这里的一对一和一对多是针对监听的属性的,即既可以监听单个属性,也可以监听集合属性。

在OC中,所有NSObject子类的所有属性(包括计算属性)都支持KVO;而在Swift中,只有在@objc dynamic修饰的属性(包括计算属性)才支持KVO,即使用@objc dynamic修饰的属性与OC行为一致。

本地编译:当前平台上编译用于当前平台的程序或库。

交叉编译:用特定的交叉编译器编译用于其他平台的程序或库。

DTS、PTS

FFmpeg中获取PTS:

变化:

  • 不需要要调用注册方法。
  • 简化了流程。
  • 语义更准确。

关键的结构体可分成以下几类:

解协议(http、rtsp、rtmp、mms)

下载已编译的静态库:https://evermeet.cx/ffmpeg/

命令分类