音视频开发-ffmpeg介绍-系列二

目录

一、FFmpeg核心结构体

二、解码流程

三、FFmpeg解码实现

四、FFmpeg编码实现

五、FFmpeg转码实现


一、FFmpeg核心结构体

AVFormatContext:解封装功能的结构体,包含文件名、音视频流、时长、比特率等信息;

AVCodecContext:编解码器上下文,编码和解码时必须用到的结构体,包含编解码器类型、视频宽高、音频通道数和采样率等信息;

AVCodec:存储编解码器信息的结构体;

AVStream:存储音频或视频流信息的结构体;

AVPacket:存储音频或视频编码数据;

AVFrame:存储音频或视频解码数据(原始数据)

二、解码流程

三、FFmpeg解码实现

解码实现的是将压缩域的视频数据解码为像素域的 YUV 数据。实现的过程,可以大致用如下图所示

从图中可以看出,大致可以分为下面三个步骤:

  1. 首先要有待解码的压缩域的视频。
  2. 其次根据压缩域的压缩格式获得解码器。
  3. 最后解码器的输出即为像素域的 YUV 数据

四、FFmpeg编码实现

从图中可以大致看出视频编码的流程:

  1. 首先要有未压缩的 YUV 原始数据。
  2. 其次要根据想要编码的格式选择特定的编码器。
  3. 最后编码器的输出即为编码后的视频帧

五、FFmpeg转码实现

传统的编码转换程序工作原理图

封装的目的:

  1. 是为了在一个文件流(Stream)中能同时存储视频流(Video Stream)、音频流(Audio Stream)、字幕(Subtitle)、附件(t)、数据(d)等内容。这正是"复用"的含义所在(分时复用)。

  2. 是在网络环境下确保数据的可靠快速传输。

编码的目的:

是为了压缩媒体数据。有别于通用文件数据的压缩,在图像或音频压缩的时候,可以借助图像特性(如前后关联、相邻图块关联)或声音特性(听觉模型)进行压缩,可以达到比通用压缩技术更高的压缩比

相关推荐
Bofu-4 小时前
【音频测试】03-WPF 实现声道自动验证 + Whisper 语音识别录音检测
c#·whisper·wpf·音视频·音频测试·naudio 声道控制
ZC跨境爬虫4 小时前
跟着 MDN 学 HTML day_18:(HTML 表格进阶特性与无障碍——从标题结构到屏幕阅读器适配)
前端·笔记·ui·html·音视频
byte轻骑兵5 小时前
【LE Audio】CAP精讲[1]: 从理论到实操,CAP 协同流程入门全攻略
音视频·实时音视频·le audio·低功耗音频·蓝牙通话
m0_691021515 小时前
影视画面匹配原片技术 AI一键匹配原片 创意提效 速橙软件-相同视频片段匹配系统
人工智能·音视频
ZC跨境爬虫6 小时前
跟着 MDN 学 HTML day_16:(音频与视频处理——从画布滤镜到3D沉浸音频的进阶指南)
前端·javascript·ui·3d·html·音视频
科研前沿1 天前
MatrixFusion™+ 云边端协同,百路视频全域融合实现零延时指令闭环
大数据·人工智能·音视频
key_3_feng1 天前
《淡季》推歌视频创作全攻略:用Workbuddy打造治愈系情感短片
音视频·workbuddy
数据法师1 天前
HandBrake:开源跨平台视频转码工具完全指南
开源·音视频
开开心心就好1 天前
整合多家平台资源的免费学习应用
人工智能·vscode·学习·游戏·音视频·语音识别·媒体
DogDaoDao1 天前
VVC 参考软件 VTM 全面深度解析:架构设计、核心算法与工程实践
音视频·视频编解码·hevc·h266·vvc·vtm·视频压缩