ffmpeg基础知识入门

news2025/4/17 10:26:19

文章目录

    • 📦 1. **容器(Container)**
      • ✅ 定义:
      • ✅ 举例:
      • ✅ 功能:
    • 📶 2. **媒体流(Stream)**
      • ✅ 定义:
      • ✅ 举例:
      • ✅ 流和容器关系:
    • 🧱 3. **数据帧(Frame / Packet)**
      • ✅ 定义:
      • ✅ 举例:
    • 🎞️ 4. **编解码器(Codec)**
      • ✅ 定义:
      • ✅ 功能:
      • ✅ 举例:
      • ✅ 说明:
    • 🔄 5. **复用器(Muxer)**
      • ✅ 定义:
      • ✅ 举例:
    • 🔍 6. **解复用器(Demuxer)**
      • ✅ 定义:
      • ✅ 举例:
    • 🧠 它们的关系图(理解路径):
    • 💬 举个生活类比:


这是音视频领域中非常核心的一些基础概念,它们是构建媒体播放、推流、编解码、直播系统等的基础。下面我给你分条清晰地讲一下这些术语之间的含义和联系:


📦 1. 容器(Container)

✅ 定义:

容器是一种媒体封装格式,用来将音频流、视频流、字幕流等打包在一个文件中。

✅ 举例:

  • 常见的容器格式有:
    • .mp4.mkv.avi.mov.flv.ts
  • 容器 ≠ 编码方式,它只是“装”编码后的数据的一个壳子。

✅ 功能:

  • 封装多个媒体流(视频、音频、字幕)
  • 提供时序信息(比如音视频同步)
  • 支持索引、元数据等

📶 2. 媒体流(Stream)

✅ 定义:

媒体流是指某一类连续的媒体数据,通常是视频流、音频流或字幕流。

✅ 举例:

  • 一个 .mp4 文件中可能有:
    • 一条视频流(例如 H.264 编码)
    • 一条音频流(例如 AAC 编码)
    • 一条字幕流(例如 SRT)

✅ 流和容器关系:

  • 容器中可以有多条流(Stream),每条流是独立的数据序列。
  • 解码和播放的时候,需要对每条流单独处理。

🧱 3. 数据帧(Frame / Packet)

✅ 定义:

  • Frame(帧):解码后的数据单位(未压缩)
    • 视频帧是一张图片
    • 音频帧是一段 PCM 采样点
  • Packet(包):压缩后的数据单位(经过编码器压缩后,准备写入容器的)

✅ 举例:

  • 视频:
    • 解码前:H.264 压缩包(packet)
    • 解码后:YUV 图像(frame)
  • 音频:
    • 解码前:AAC 压缩包(packet)
    • 解码后:PCM 数据(frame)

🚨 注意:frame 通常指未压缩的图像/音频数据,而 packet 是压缩后的小块数据。


🎞️ 4. 编解码器(Codec)

✅ 定义:

Codec = COder + DECoder,即“编码器/解码器”。

✅ 功能:

  • 编码器:将原始媒体数据压缩成占用更少空间的数据
  • 解码器:将压缩数据还原成可播放的原始数据

✅ 举例:

媒体类型编码器解码器
视频H.264、H.265、VP9、AV1对应解码器
音频AAC、MP3、FLAC、Opus对应解码器

✅ 说明:

  • 媒体播放器(如 VLC)必须支持容器格式和其内部使用的编解码器,才能正常播放。

🔄 5. 复用器(Muxer)

✅ 定义:

复用器(Muxer)把多条媒体流(音频、视频)打包进容器,形成一个完整的媒体文件或媒体流。

✅ 举例:

  • 把 H.264 视频、AAC 音频合成一个 .mp4 文件,就需要复用器。
  • ffmpeg 就是常用的复用工具:
    ffmpeg -i video.h264 -i audio.aac -c copy output.mp4
    

🔍 6. 解复用器(Demuxer)

✅ 定义:

解复用器(Demuxer)从容器中提取出音视频流,再送到对应的解码器中处理。

✅ 举例:

  • 播放器播放一个 .mp4 文件,首先通过解复用器提取音频流和视频流:
    • 音频流送到 AAC 解码器
    • 视频流送到 H.264 解码器

🧠 它们的关系图(理解路径):

[摄像头/麦克风采集原始数据]
        ↓
     [原始帧]
        ↓ 编码器(Codec)
     [压缩帧]
        ↓ 复用器(Muxer)
     [封装到容器 - MP4文件]
        ↓
-----------------------------
        ↓
    播放阶段:
        ↓ 解复用器(Demuxer)
     [音视频流分离]
        ↓ 解码器(Codec)
     [原始帧]
        ↓ 渲染
   [画面 + 声音 输出]

💬 举个生活类比:

  • 容器:像打包好的快递盒(比如顺丰箱子)
  • :快递盒里放的东西(音频、视频、字幕)
  • Packet:每个流中的一小块数据,像一个个文件袋
  • Codec:像压缩和解压缩的算法,压缩快递体积
  • Muxer:像打包员,把所有内容封装进盒子
  • Demuxer:像拆包员,把盒子打开、分拣内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2330663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++项目 网络聊天服务器 实现;QPS测试

源码 https://github.com/DBWGLX/SZU_system_programming 文章目录 技术设计编码JSON的替换Protobuf 网络线程池更高效率网络字节序的考虑send可能无法一次性发送全部数据!EPOLLHUP , EPOLLERR 的正确处理 IO数据库操作的更高性能 开发日志2025.3a.粘包问题 2025.4b…

rnn的音频降噪背后技术原理

rnniose: 这个演示展示了 RNNoise 项目,说明了如何将深度学习应用于噪声抑制。其核心理念是将经典的信号处理方法与深度学习结合,打造一个小巧、快速的实时噪声抑制算法。它不需要昂贵的 GPU —— 在树莓派上就能轻松运行。 相比传统的噪声抑制系统&…

ubuntu 配置固定ip

在装服务器系统的时候,DHCP自动获取ip时,路由可能会重新分配ip,为避免产生影响,可以关闭DHCP将主机设置为静态ip。 系统环境 Ubuntu 22.04-Desktop 配置方式 一、如果是装的Ubuntu图形化(就是可以用鼠标操作点击应用…

基于Coze平台实现工程项目管理SaaS软件的在线化客户服务

一、引言 在数字化转型浪潮下,SaaS(软件即服务)模式已成为企业级软件的主流交付方式。然而,随着用户规模的增长,传统人工客服模式面临响应速度慢、人力成本高、知识库更新滞后等痛点。如何利用AI技术实现客户服务的智…

批量图片文本识别重命名,批量ocr识别图片重命名,基于WPF和腾讯OCR云部署实,现批量对图片局部提取文字后重命名的操作详细步骤

​​1. 项目背景​​ 在日常工作中,我们经常需要处理大量图片文件,这些图片可能包含重要的文字信息。为了提高工作效率,我们需要一种自动化的方式,从图片中提取文字,并根据提取的文字对图片进行重命名。 本项目基于 ​​WPF​​ 框架开发桌面应用程序,结合 ​​腾讯 OCR…

Linux——冯 • 诺依曼体系结构操作系统初识

目录 1. 冯 • 诺依曼体系结构 1.1 冯•诺依曼体系结构推导 1.2 内存提高冯•诺依曼体系结构效率的方法 1.3 理解数据流动 2. 初步认识操作系统 2.1 操作系统的概念 2.2 设计OS的目的 3. 操作系统的管理精髓 1. 冯 • 诺依曼体系结构 1.1 冯•诺依曼体系结构推导 计算…

Vue3 实现进度条组件

样式如下&#xff0c;代码如下 <script setup> import { computed, defineEmits, defineProps, onMounted, ref, watch } from vue// 定义 props const props defineProps({// 初始百分比initialPercentage: {type: Number,default: 0,}, })// 定义 emits const emits…

35.[前端开发-JavaScript基础]Day12-for循环中变量-华为商城-商品列表-轮播图

for循环中监听函数中打印变量 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wi…

【蓝桥杯】十五届省赛B组c++

目录 前言 握手问题 分析 排列组合写法 枚举 小球反弹 分析 代码 好数 分析 代码 R 格式 分析 代码 宝石组合 分析 代码 数字接龙 分析 代码 拔河 分析 代码 总结 前言 主播这两天做了一套蓝桥杯的省赛题目&#xff08;切实感受到了自己有多菜&#x…

[Linux系统编程]多线程

多线程 1. 线程1.1 线程的概念1.2 进程与线程对比1.3 轻量级进程 2. Linux线程控制2.1 POSIX 线程&#xff08;pthread&#xff09;2.2 线程ID、pthread_t、和进程地址空间的关系2.2.1 pthread_self2.2.2 pthread_create2.2.3 pthread_join2.2.4 线程终止的三种方式2.2.5 pthre…

IntelliJ IDEA下开发FPGA——FPGA开发体验提升__下

前言 由于Quartus写代码比较费劲&#xff0c;虽然新版已经有了代码补全&#xff0c;但体验上还有所欠缺。于是使用VS Code开发&#xff0c;效果如下所示&#xff0c;代码样式和基本的代码补全已经可以满足开发&#xff0c;其余工作则交由Quartus完成 但VS Code的自带的git功能&…

odo18实施——销售-仓库-采购-制造-制造外包-整个流程自动化单据功能的演示教程

安装模块 安装销售 、库存、采购、制造模块 2.开启外包功能 在进入制造应用点击 配置—>设置 勾选外包&#xff0c;点击保存 添加信息 一、添加客户信息 点击到销售应用 点击订单—>客户 点击新建 创建客户1&#xff0c;及其他客户相关信息&#xff0c;点…

微信小程序生成某个具体页面的二维码

微信小程序&#xff0c;如果要生成某个具体页面&#xff0c;而非首页的二维码&#xff0c;体验和正式的生成方法如下&#xff1a; 1、体验版二维码&#xff1a; 管理---版本管理---修改页面路径&#xff0c;输入具体页面的路径以及参数&#xff0c;生成的是二维码 2、正式小程…

鸿蒙开发_ARKTS快速入门_语法说明_组件声明_组件手册查看---纯血鸿蒙HarmonyOS5.0工作笔记010

然后我们来看如何使用组件 可以看到组件的组成 可以看到我们使用的组件 然后看一下组件的语法.组件中可以使用子组件. 然后组件中可以有参数,来修改组件的样式等 可以看到{},这种方式可以设置组件参数,当然在下面. 的方式也可以的 然后再来

接口异常数组基础题

题目描述 设想你正在构建一个智能家居控制系统。这个系统可以连接多种不同类型的智能设备&#xff0c;如智能灯泡、智能空调和智能门锁。每种设备都有其独特的功能&#xff0c;不过它们也有一些通用的操作&#xff0c;像开启、关闭和获取设备状态等。系统需要提供一个方法来控…

rustdesk折腾手记

背景 我的工作环境&#xff1a;主力电脑是macPro, 另外一台ThinkPad W530作为开发机&#xff0c;装的是LinuxMint&#xff0c;还有一台ThinkPad P15作为服务器。平常显示器接到macPro&#xff0c;在macOS上通过微软的远程桌面连接到另外两台Linux。基本访问比较流畅&#xff0…

使用el-tab 实现两个tab切换

1、主页面 index.vue 2、tab1&#xff1a;school.vue 3、tab2&#xff1a;parent.vue 具体代码如下&#xff1a; <template><div class"app-container"><!-- 使用el-tabs 实现两个组件的切换 --><el-tabs v-model"activeName" typ…

使用Pholcus编写Go爬虫示例

想用Pholcus库来写一个Go的爬虫程序。首先&#xff0c;我得确认Pholcus的当前状态&#xff0c;因为之前听说过它可能已经不再维护了。不过用户可能还是需要基于这个库的示例&#xff0c;所以得先提供一个基本的框架。 首先&#xff0c;我应该回忆一下Pholcus的基本用法。Pholc…

单片机实现触摸按钮执行自定义任务组件

触摸按钮执行自定义任务组件 项目简介 本项目基于RT8H8K001开发板 RT6809CNN01开发板 TFT显示屏(1024x600) GT911触摸屏实现了一个多功能触摸按钮组件。系统具备按钮控制后执行任务的功能&#xff0c;可用于各类触摸屏人机交互场景。 硬件平台 MCU: STC8H8K64U&#xff0…

Ai云防护技术解析——服务器数据安全的智能防御体系

本文深度解析AI云防护技术如何通过智能流量分析、动态行为建模、自适应防御策略构建服务器安全体系。结合2023年群联科技实战案例,揭示机器学习算法在识别新型DDoS攻击、加密流量检测、零日漏洞防御中的技术突破,并附Gartner最新防护效果验证数据。 AI驱动的流量特征建模技术…