本文介绍: 本文介绍 FFmpeg 骨架:“八大金刚” 核心开发库,重要数据结构与 API上图后者是前者的数据成员,Format Layer 除了 AVInputFormat 外还有一个 AVOutputFormatAVFormatContext一个贯穿始终的数据结构,很多函数用到它作为参数,是输入输出相关信息一个容器。解协议URLContext主要存储视音频使用协议类型以及状态。URLProtocol 存储输入视音频使用封装格式。每种协议对应一个 URLProtocol 结构


前言

本文介绍 FFmpeg 骨架:“八大金刚” 核心开发库,重要数据结构与 API
在这里插入图片描述


一、FFmpeg 核心开发

二、FFmpeg 重要数据结构与 API

1、简介

FFmpeg结构体很多,其中下图所涉及的结构需要熟记:
在这里插入图片描述
上图后者是前者的数据成员,Format Layer 除了 AVInputFormat 外还有一个 AVOutputFormat

AVFormatContext一个贯穿始终的数据结构,很多函数都用到它作为参数,是输入输出相关信息的一个容器

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

2、FFmpeg 解码流程

①、FFmpeg2.x码流

在这里插入图片描述

②、FFmpeg4.x 解码流

在这里插入图片描述

3、FFMpeg比较重要的函数以及数据结构

①、数据结构

  • AVFormatContext
  • AVOutputFormat
  • AVInputFormat
  • AVCodecContext
  • AVCodec
  • AVFrame
  • AVPacket
  • AVPicture
  • AVStream

②、初始化函数

③、音视频解码函数

④、文件操作

⑤、其他函数

三、FFmpeg 流程

1、FFmpeg 主要框架

在这里插入图片描述

2、文件处理基本流程(转码流程)

在这里插入图片描述

  • demuxer:解复用;即将音视频分离出来,上图中的视频流是 AVC(H264)格式,音频流是 AAC 格式;
  • decoder:解码器;
  • filter: 帧处理这里将原始 19201080 转换为 1280720;
  • encoder编码器这里是 H265 的视频格式;
  • muxer:复用,将音频和视频进行重新封装。

ffmpeg 对一个媒体文件进行解码的主要流程是:
在这里插入图片描述

解码流程图

①、解复用(Demux)

视频文件的音频和视频都是分开进行压缩的,因为音频和视频的压缩算法不一样,所以解码也不一样,所以需要对音频和视频分别进行解码。虽然音频和视频是分别进行压缩的,但是为了传输过程的方便,降压所过的音频和视频捆绑在一起进行传输。所以解复用这一步就是将文件中捆绑的音频流和视频流分开来以方便后面分别对它们进行解码。
在这里插入图片描述

②、解码(Decode)

一个音视频文件肯定是经过某种格式压缩的(h264、h265 等),也就是通常所说的音视频编码编码是为了减少数据量,否则的话对于音视频数据的存储和网络传输将是很难完成的,所以我们必须对音视频文件进行尽可能的压缩。
在这里插入图片描述


我的qq:2442391036,欢迎交流


原文地址:https://blog.csdn.net/qq_41839588/article/details/134621329

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_20938.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注