一、前言

本系列文章是对音视频技能入门常识的整理和温习,为进一步深入系统研究音视频技能巩固根底。文章列表:

  • 01-音视频技能中心常识|了解音频技能【移动通讯技能的开展、声响的实质、深入了解音频】
  • 02-音视频技能中心常识|建立开发环境【FFmpeg与Qt、Windows开发环境建立、Mac开发环境建立、Qt开发根底】
  • 03-音视频技能中心常识|Qt开发根底【.pro文件的装备、Qt控件根底、信号与槽】
  • 04-音视频技能中心常识|音频录制【命令行、C++编程】
  • 05-音视频技能中心常识|音频播映【播映PCM、WAV、PCM转WAV、PCM转WAV、播映WAV】
  • 06-音视频技能中心常识|音频重采样【音频重采样简介、用命令行进行重采样、经过编程重采样】
  • 07-音视频技能中心常识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
  • 08-音视频技能中心常识|成像技能【重识图片、详解YUV、视频录制、显现BMP图片、显现YUV图片】
  • 09-音视频技能中心常识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
  • 10-音视频技能中心常识|RTMP服务器建立【流媒体、服务器环境】

二、FFmpeg与Qt

1. 为什么挑选FFmpeg?

每个主流渠道根本都有自己的音视频开发库(API),用以处理音视频数据,比方:

  • iOS:AVFoundation、AudioUnit等
  • Android:MediaPlayer、MediaCodec等
  • Windows:DirectShow等

为了让一切渠道的开发者都能够学习到音视频开发的通用技能,本教程首要解说跨渠道的音视频开发库FFmpeg。其实只要你掌握了FFmpeg,也能够很快上手其他音视频开发库,因为底层原理都是相同的,你终究操作的都是相同的数据,比方MP3、MP4文件。

2. FFmpeg简介

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

FFmpeg的名字由FF和mpeg组成。

  • FF是Fast Forward(译为:快进、快速行进)的简称
  • mpeg来源于Moving Picture Experts Group(简称:MPEG,译为:动态影像专家小组)
    • MPEG是源自ISO与IEC等国际组织的作业小组
    • MPEG的其间一项作业是:拟定音视频相关的标准(比方紧缩标准)

有很多知名项目都选用了FFmpeg,比方:

  • Google Chrome:浏览器
  • Firefox:浏览器
  • VLC:跨渠道播映器
  • MPlayer
  • ijkplayer:bilibili团队开发的Android/iOS播映器结构
  • Perian:Apple公司的QuickTime组件

3. Qt

假如要想开发一个播映器,肯定得编写界面,同样为了确保跨渠道开发,这儿选用的GUI库是Qt,官方的开发东西QtCreator是跨渠道的(支撑Windows、Mac、Linux)。Qt开发选用的编程言语是C++。

如若你没有掌握C++言语,或许现已对C++语法现已淡忘,欢迎参阅我这几篇文章进行快速温习:

  • 01-C++中心语法|C++概述【C++简介、C++起源、可移植性和标准、为什么C++会成功、从一个简单的程序开端认识C++】
  • 02-C++中心语法|C++对C的扩展【::效果域运算符、名字操控、struct类型加强、C/C++中的const、引证(reference)、函数】
  • 03-C++中心语法|面向目标1【 C++编程标准、类和目标、面向目标程序设计事例、目标的结构和析构、C++面向目标模型初探】
  • 04-C++中心语法|面向目标2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转化、 C++标准、过错&&反常、智能指针】
  • 05-C++中心语法|面向目标3【 承继和派生、多态、静态成员、const成员、引证类型成员、VS的内存窗口】

三、Windows开发环境建立

1. FFMpeg下载

网上现已有编译好的FFmpeg,现在最新的Release版别是4.3.2,能够直接下载到项目中进行开发运用。

  • Windows版别下载:ffmpeg-4.3.2-2021-02-27-full_build-shared.7z
  • 源码下载:ffmpeg-4.3.2.tar.xz
    • 网上编译好的FFmpeg一般是完整版,体积比较大
    • 日后咱们能够依据实际需求,对FFmpeg的源码进行裁剪后再进行从头编译

解压ffmpeg-4.3.2-2021-02-27-full_build-shared.7z文件后,目录结构如下所示:

  • bin
    • 有编译好的可执行程序:ffmpeg.exe、ffplay.exe、ffprobe.exe,能够直接在命令行上运用,比方
      • ffplay xx.mp4:能够直接播映某个视频
      • ffmpeg -version:能够检查FFmpeg的版别号
    • 有运转时需求用到的动态库文件(*.dll)
  • doc:FFmpeg的运用文档
  • include:开发时需求包括的头文件
  • lib:链接时需求用到的库文件

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

2. Qt下载

本教程中挑选5.14.2版别(从5.15版别开端是收费版别)。

  • 下载地址:download.qt.io/archive/qt/…
  • Windows系统挑选下载:qt-opensource-windows-x86-5.14.2.exe

3. Qt开发

3.1 第一个Qt项目

翻开QtCreator,文件 -> 新建文件或项目。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

Application -> Qt Widgets Application。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

设置项目称号和项目的寄存途径。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】
02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

QtCreator默许会创建一个MainWindow类(主窗口)。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】
02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

勾选MinGW编译器。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】
02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

双击翻开mainwindow.ui文件,能够往右边的主窗口中添加一些界面元素(比方按钮)。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】
02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

点击左下角的运转按钮(绿色三角形),即可看到一个窗口界面,这个便是QtCreator默许创建的主窗口(MainWindow目标)。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】
02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

3.2 消除警告

每次运转Qt程序,你的操控台或许都会呈现以下警告信息:QT_DEVICE_PIXEL_RATIO现已过期。

Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:
   QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
   QT_SCREEN_SCALE_FACTORS to set per-screen DPI.
   QT_SCALE_FACTOR to set the application global scale factor.

解决计划:设置环境变量QT_SCALE_FACTOR为1即可。

#include "mainwindow.h"
#include <QApplication>
// 导入头文件【也能够不导入,因为<QApplication>中现已包括了<QByteArray>】
// #include <QByteArray>
int main(int argc, char *argv[]) {
    // 经过qputenv函数设置QT_SCALE_FACTOR为1
    qputenv("QT_SCALE_FACTOR", QByteArray("1"));
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

3.3 集成FFmpeg到Qt项目中

在Windows中,咱们终究是经过调用FFmpeg动态库(dll)中的函数来操作音视频数据,运用dll的其间一种方式是需求用到3种文件:

  • .h:头文件(Header File)
    • 包括了函数的声明
    • 经过*#include*去导入相应的头文件
  • .dll:动态链接库(Dynamic Link Library)
    • 包括了函数的具体完成代码
    • Windows程序会在运转过程中,动态调用dll中的函数
  • .lib或**.dll.a**:(动态链接库的)导入库(Import Library)
    • .lib:用于MSVC编译器中
    • .dll.a:用于MinGW编译器中
    • 包括了dll中函数的入口,用于辅助找到并调用dll中的函数
    • 终究需求链接到Windows程序中(比方合并到exe文件中)

值得一提的是,在Windows中,静态链接库(Static Link Library)的扩展名也是**.lib**、.dll.a。静态链接库和导入库的区别是:

  • 静态链接库:包括了函数的具体完成代码
  • 导入库:不包括函数的具体完成代码(函数的具体完成代码存储在dll中)

3.2.1 修正**.pro**文件

# 设置头文件的目录,以便编译器能够找到头文件
INCLUDEPATH += %FFMPEG_HOME%/include

# 设置导入库的目录和需求链接的导入库
LIBS += -L%FFMPEG_HOME%/lib \
        -lavcodec \
        -lavdevice \
        -lavfilter \
        -lavformat \
        -lavutil \
        -lpostproc \
        -lswscale \
        -lswresample
  • #号后面的内容是注释
  • %FFMPEG_HOME%表示ffmpeg-4.3.2-2021-02-27-full_build-shared.7z解压后的目录
    • 需求依据你的实际情况修正为真实的途径
  • -L:设置导入库的目录,以便编译器能够找到导入库
  • -l:设置需求链接的导入库称号
    • 导入库称号需求去掉文件名前面的lib,比方libavcodec.dll.a就写成avcodec

3.2.2 调用函数

main.cpp中调用av_version_info函数,获取FFmpeg的版别信息。

#include "mainwindow.h"
#include <QApplication>
// 为了运用qDebug函数
#include <QDebug>
// FFmpeg是C言语库
// 有了extern "C",才能在C++中导入C言语函数
extern "C" {
#include <libavcodec/avcodec.h>
}
int main(int argc, char *argv[]) {
    // 打印版别信息
    qDebug() << av_version_info();
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

3.2.3 复制dll文件

Qt程序编译成功后,会生成一个exe文件

  • exe是Windows中的一种可执行文件
  • 咱们编写的程序代码终究都存在了exe文件中

为了确保exe在运转时能成功调用FFmpeg的函数,那么就得让exe能够找到FFmpeg的dll文件(动态库文件)。能够将**%FFMPEG_HOME%/bin**目录中的一切dll文件复制到exe文件地点的目录中,exe在运转的时分,能主动找到跟它同一目录下的dll文件。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

能够经过检查构建目录得知exe文件地点的目录。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

运转程序后,假如能在操控台看到4.3.2字样的输出信息,阐明FFmpeg现已集成成功。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

3.2.4 dll的查找次序

exe在寻觅dll文件时,大约按照以下优先级次序去查找(这儿只列出了大约的查找途径,并没有写全):

  1. exe地点的目录

  2. Windows的System目录

    • C:/Windows/System
    • C:/Windows/System32
  3. Windows目录

    • C:/Windows
  4. 环境变量Path中的途径

    • 所以能够考虑将**%FFMPEG_HOME%/bin**目录装备到Path变量中
    • 置于如何装备Windows的环境变量Path,这是根本开发常识了,就不再解说了

第1种方式需求在每一个Qt程序中都复制一份FFmpeg的dll文件,第2~4种方式能够让多个Qt程序共用同一份FFmpeg的dll文件。

3.3 .pro文件

.pro文件是Qt项目的主装备文件。

# 包括了core、gui两个模块
QT       += core gui

# 高于4版别,就包括widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 源代码
SOURCES += \
    main.cpp \
    mainwindow.cpp

# 头文件
HEADERS += \
    mainwindow.h

# ui文件
FORMS += \
    mainwindow.ui

3.4 常用快捷键

  • 字体缩放:Ctrl + 鼠标滚轮
  • 帮助文档:F1
  • 注释:Ctrl + /
  • 同名的.h、.cpp文件之间切换:F4

四、Mac开发环境建立

在不同的Mac环境下,实践出来的效果或许跟本教程会有所差异。我的Mac环境是:Intel CPUmacOS Big Sur(11.2.2)

1. FFMpeg装置

在Mac环境中,直接运用Homebrew装置FFmpeg即可。还没有装置Homebrew,或许嫌Homebrew下载速度慢的童鞋,能够参阅这篇文章:《Mac装置Homebrew》。

brew install ffmpeg

装置完毕后,假如能成功在命令行检查FFmpeg的版别号,那阐明现已装置成功。

ffmpeg -version

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

1.1 目录结构

经过brew install装置的软件会寄存到 /usr/local/Cellar 目录中,经过以下命令能够翻开FFmpeg的装置目录。

cd /usr/local/Cellar/ffmpeg
open .

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

  • bin:有编译好的可执行程序:ffmpeg、ffplay等,能够直接在命令行上运用,比方
    • ffplay xx.mp4:能够直接播映某个视频
    • ffmpeg -version:能够检查FFmpeg的版别号
  • include:开发时需求包括的头文件
  • lib:链接时需求用到的库文件

2. Qt装置

经过brew install装置Qt,终究被装置在 /usr/local/Cellar/qt 目录。

brew install qt

经过brew install –cask装置Qt Creator,终究被装置在 /usr/local/Caskroom/qt-creator 目录。

brew install --cask qt-creator

2.1 装备

经过brew装置的Qt和Qt Creator是分隔的,需求在Qt Creator中设置一下Qt的途径。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

Qt的途径是在 /usr/local 中,默许是躲藏的。

  • 能够运用快捷键 Command + Shift + . 显现躲藏文件和文件夹
  • 能够运用快捷键 Command + Shift + G 手动输入Qt的文件夹:/usr/local/Cellar/qt

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

挑选bin目录下的qmake

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

设置64bit那一项为默许开发环境。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

滚动到底下,挑选刚才设置的Qt版别。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

3. Qt开发

3.1 新建项目

新建项目的操作和Windows版别差不多。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

运转后的效果如下图所示。

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

3.2 设置头文件途径

  • INCLUDEPATH += /usr/local/Cellar/ffmpeg/版别号/include

3.3 设置库文件途径

**注意:结合ffmpeg的lib目录下的库列表,获取自己当前项目需求的库即可 **

  • LIBS += -L /usr/local/Cellar/ffmpeg/版别号/lib\
    •        -lavcodec \
      
    •        -lavdevice \
      
    •        -lavfilter \
      
    •        -lavformat \
      
    •        -lavutil \
      
    •        -lpostproc \
      
    •        -lswscale \
      
    •         ....
      
# 设置头文件途径
INCLUDEPATH += /usr/local/Cellar/ffmpeg/4.3.2/include
# 设置库文件途径
LIBS += -L/usr/local/Cellar/ffmpeg/4.3.2/lib \
        -lavcodec \
        -lavdevice \
        -lavfilter \
        -lavformat \
        -lavutil \
        -lpostproc \
        -lswscale \
        -lswresample \
        -lavresample

打印FFmpeg版别号。

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
extern "C" {
#include <libavcodec/avcodec.h>
}
int main(int argc, char *argv[]) {
    // 打印版别号
    qDebug() << av_version_info();
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

02-音视频技术核心知识|搭建开发环境【FFmpeg与Qt、Windows开发环境搭建、Mac开发环境搭建、Qt开发基础】

专题系列文章

1. 前常识

  • 01-探求iOS底层原理|总述
  • 02-探求iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器、LLVM】
  • 03-探求iOS底层原理|LLDB
  • 04-探求iOS底层原理|ARM64汇编

2. 根据OC言语探求iOS底层原理

  • 05-探求iOS底层原理|OC的实质
  • 06-探求iOS底层原理|OC目标的实质
  • 07-探求iOS底层原理|几种OC目标【实例目标、类目标、元类】、目标的isa指针、superclass、目标的办法调用、Class的底层实质
  • 08-探求iOS底层原理|Category底层结构、App启动时Class与Category装载过程、load 和 initialize 执行、关联目标
  • 09-探求iOS底层原理|KVO
  • 10-探求iOS底层原理|KVC
  • 11-探求iOS底层原理|探求Block的实质|【Block的数据类型(实质)与内存布局、变量捕获、Block的品种、内存办理、Block的修饰符、循环引证】
  • 12-探求iOS底层原理|Runtime1【isa详解、class的结构、办法缓存cache_t】
  • 13-探求iOS底层原理|Runtime2【音讯处理(发送、转发)&&动态办法解析、super的实质】
  • 14-探求iOS底层原理|Runtime3【Runtime的相关运用】
  • 15-探求iOS底层原理|RunLoop【两种RunloopMode、RunLoopMode中的Source0、Source1、Timer、Observer】
  • 16-探求iOS底层原理|RunLoop的运用
  • 17-探求iOS底层原理|多线程技能的底层原理【GCD源码剖析1:主行列、串行行列&&并行行列、全局并发行列】
  • 18-探求iOS底层原理|多线程技能【GCD源码剖析1:dispatch_get_global_queue与dispatch_(a)sync、单例、线程死锁】
  • 19-探求iOS底层原理|多线程技能【GCD源码剖析2:栅栏函数dispatch_barrier_(a)sync、信号量dispatch_semaphore】
  • 20-探求iOS底层原理|多线程技能【GCD源码剖析3:线程调度组dispatch_group、事情源dispatch Source】
  • 21-探求iOS底层原理|多线程技能【线程锁:自旋锁、互斥锁、递归锁】
  • 22-探求iOS底层原理|多线程技能【原子锁atomic、gcd Timer、NSTimer、CADisplayLink】
  • 23-探求iOS底层原理|内存办理【Mach-O文件、Tagged Pointer、目标的内存办理、copy、引证计数、weak指针、autorelease

3. 根据Swift言语探求iOS底层原理

关于函数枚举可选项结构体闭包特点办法swift多态原理StringArrayDictionary引证计数MetaData等Swift根本语法和相关的底层原理文章有如下几篇:

  • 01-Swift5常用中心语法|了解Swift【Swift简介、Swift的版别、Swift编译原理】
  • 02-Swift5常用中心语法|根底语法【Playground、常量与变量、常见数据类型、字面量、元组、流程操控、函数、枚举、可选项、guard句子、区间】
  • 03-Swift5常用中心语法|面向目标【闭包、结构体、类、枚举】
  • 04-Swift5常用中心语法|面向目标【特点、inout、类型特点、单例模式、办法、下标、承继、初始化】
  • 05-Swift5常用中心语法|高级语法【可选链、协议、过错处理、泛型、String与Array、高级运算符、扩展、拜访操控、内存办理、字面量、模式匹配】
  • 06-Swift5常用中心语法|编程范式与Swift源码【从OC到Swift、函数式编程、面向协议编程、呼应式编程、Swift源码剖析】

4. C++中心语法

  • 01-C++中心语法|C++概述【C++简介、C++起源、可移植性和标准、为什么C++会成功、从一个简单的程序开端认识C++】
  • 02-C++中心语法|C++对C的扩展【::效果域运算符、名字操控、struct类型加强、C/C++中的const、引证(reference)、函数】
  • 03-C++中心语法|面向目标1【 C++编程标准、类和目标、面向目标程序设计事例、目标的结构和析构、C++面向目标模型初探】
  • 04-C++中心语法|面向目标2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转化、 C++标准、过错&&反常、智能指针】
  • 05-C++中心语法|面向目标3【 承继和派生、多态、静态成员、const成员、引证类型成员、VS的内存窗口】

5. Vue全家桶

  • 01-Vue全家桶中心常识|Vue根底【Vue概述、Vue根本运用、Vue模板语法、根底事例、Vue常用特性、归纳事例】
  • 02-Vue全家桶中心常识|Vue常用特性【表单操作、自定义指令、计算特点、侦听器、过滤器、生命周期、归纳事例】
  • 03-Vue全家桶中心常识|组件化开发【组件化开发思维、组件注册、Vue调试东西用法、组件间数据交互、组件插槽、根据组件的
  • 04-Vue全家桶中心常识|多线程与网络【前后端交互模式、promise用法、fetch、axios、归纳事例】
  • 05-Vue全家桶中心常识|Vue Router【根本运用、嵌套路由、动态路由匹配、命名路由、编程式导航、根据vue-router的事例】
  • 06-Vue全家桶中心常识|前端工程化【模块化相关标准、webpack、Vue 单文件组件、Vue 脚手架、Element-UI 的根本运用】
  • 07-Vue全家桶中心常识|Vuex【Vuex的根本运用、Vuex中的中心特性、vuex事例】

6. 音视频技能中心常识

  • 01-音视频技能中心常识|了解音频技能【移动通讯技能的开展、声响的实质、深入了解音频】
  • 02-音视频技能中心常识|建立开发环境【FFmpeg与Qt、Windows开发环境建立、Mac开发环境建立、Qt开发根底】
  • 03-音视频技能中心常识|Qt开发根底【.pro文件的装备、Qt控件根底、信号与槽】
  • 04-音视频技能中心常识|音频录制【命令行、C++编程】
  • 05-音视频技能中心常识|音频播映【播映PCM、WAV、PCM转WAV、PCM转WAV、播映WAV】
  • 06-音视频技能中心常识|音频重采样【音频重采样简介、用命令行进行重采样、经过编程重采样】
  • 07-音视频技能中心常识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
  • 08-音视频技能中心常识|成像技能【重识图片、详解YUV、视频录制、显现BMP图片、显现YUV图片】
  • 09-音视频技能中心常识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
  • 10-音视频技能中心常识|RTMP服务器建立【流媒体、服务器环境】

其它底层原理专题

1. 底层原理相关专题

  • 01-计算机原理|计算机图形烘托原理这篇文章
  • 02-计算机原理|移动终端屏幕成像与卡顿

2. iOS相关专题

  • 01-iOS底层原理|iOS的各个烘托结构以及iOS图层烘托原理
  • 02-iOS底层原理|iOS动画烘托原理
  • 03-iOS底层原理|iOS OffScreen Rendering 离屏烘托原理
  • 04-iOS底层原理|因CPU、GPU资源消耗导致卡顿的原因和解决计划

3. webApp相关专题

  • 01-Web和类RN大前端的烘托原理

4. 跨渠道开发计划相关专题

  • 01-Flutter页面烘托原理

5. 阶段性总结:Native、WebApp、跨渠道开发三种计划功能比较

  • 01-Native、WebApp、跨渠道开发三种计划功能比较

6. Android、HarmonyOS页面烘托专题

  • 01-Android页面烘托原理
  • 02-HarmonyOS页面烘托原理 (待输出)

7. 小程序页面烘托专题

  • 01-小程序结构烘托原理