ffmpeg基础知识入门

文章目录

    • [📦 1. **容器(Container)**](#📦 1. 容器(Container))
      • [✅ 定义:](#✅ 定义:)
      • [✅ 举例:](#✅ 举例:)
      • [✅ 功能:](#✅ 功能:)
    • [📶 2. **媒体流(Stream)**](#📶 2. 媒体流(Stream))
      • [✅ 定义:](#✅ 定义:)
      • [✅ 举例:](#✅ 举例:)
      • [✅ 流和容器关系:](#✅ 流和容器关系:)
    • [🧱 3. **数据帧(Frame / Packet)**](#🧱 3. 数据帧(Frame / Packet))
      • [✅ 定义:](#✅ 定义:)
      • [✅ 举例:](#✅ 举例:)
    • [🎞️ 4. **编解码器(Codec)**](#🎞️ 4. 编解码器(Codec))
      • [✅ 定义:](#✅ 定义:)
      • [✅ 功能:](#✅ 功能:)
      • [✅ 举例:](#✅ 举例:)
      • [✅ 说明:](#✅ 说明:)
    • [🔄 5. **复用器(Muxer)**](#🔄 5. 复用器(Muxer))
      • [✅ 定义:](#✅ 定义:)
      • [✅ 举例:](#✅ 举例:)
    • [🔍 6. **解复用器(Demuxer)**](#🔍 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 就是常用的复用工具:

    bash 复制代码
    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:像拆包员,把盒子打开、分拣内容

相关推荐
EQ-雪梨蛋花汤6 小时前
【Part 3 Unity VR眼镜端播放器开发与优化】第一节|基于Unity的360°全景视频播放实现方案
unity·音视频·vr
Everbrilliant896 小时前
音视频之视频压缩及数字视频基础概念
音视频·预测编码·视频压缩编码·视频压缩编码技术·数字视频·色彩空间·视频信号的预处理
EtpBot-萧阳9 小时前
SDL2常用函数SDL事件处理:SDL_Event|SDL_PollEvent
ffmpeg·多线程·sdl·视频渲染·投屏开发
Icoolkj11 小时前
谷歌 NotebookLM 即将推出 Sparks 视频概览:Gemini 与 Deep Research 加持,可生成 1 - 3 分钟 AI 视频
人工智能·计算机视觉·音视频
半瓶啤酒一醉方休12 小时前
ffmpeg 转换视频格式
ffmpeg
Panesle15 小时前
ten-vad:低延迟、轻量化且高性能的流式语音活动检测系统
人工智能·语言模型·ffmpeg·开源·音视频·语音识别
万里不留行15 小时前
SRS流媒体服务器,配置国标协议对接和HTTPS视频流输出功能
运维·服务器·https·音视频·实时音视频
大猫会长17 小时前
利用ffmpeg给gif配上文字
ffmpeg
Hunter_pcx17 小时前
从源码编译支持ffmpeg(H264编码)的opencv(创建mp4视频报错:H264 is not supported with codec id 28)
人工智能·opencv·ffmpeg
lepton_yang1 天前
Openwrt下使用ffmpeg配合自建RTSP服务器实现推流
ffmpeg·openwrt·视频服务器