前端音视频学习(一)- 基本概念

本篇主要介绍音视频开发中的最基础概念,包括文件结构、核心术语、编码格式以及浏览器层面的基础限制。


一、 视频文件结构

一个视频文件一般是由文件信息和音视频文件组成,视频文件的结构因不同封装格式而不同。视频格式分为封装格式和编码格式,封装格式决定的是视频文件的结构,音视频数据块的大小等,而编码格式决定的是音视频的压缩的方式及算法。前端开发中主要关注的是封装格式,即常见的 .mp4.webm.ogg.m3u8 等文件类型。

1. 封装格式 与 编码格式

  • 封装格式 :决定了视频文件的结构(如何存放数据块)。常见格式:.mp4, .webm, .mkv, .flv
  • 编码格式 :决定了音视频数据的压缩算法。常见格式:H.264 (AVC), H.265 (HEVC), VP9, AV1

比喻:封装格式就像一个"文件夹",编码格式则是文件夹里"文档的压缩方式"。

2. 主流封装格式对比

格式 全称 是否浏览器原生支持 特点与说明
.mp4 MPEG-4 支持最广泛 首选格式,兼容性好,适合网页播放
.webm Web Media Chrome / Firefox 支持 Google 推出,体积小,适合 Web 用途
.ogg / .ogv Ogg Theora 部分支持(Firefox 好) 开源格式,支持不如 MP4
.m3u8 HLS(HTTP Live Streaming) hls.js 支持 Apple 开发的流媒体格式,可边播边看

二、 核心基础术语

1. 视频核心参数

  • 码率 (Bitrate) :每秒传输的数据量(单位 Mbpskbps)。

    • CBR (Constant) : 固定码率,适合直播。
    • VBR (Variable) : 动态码率,复杂画面给高码率,节省空间。
  • 帧率 (FPS) :每秒显示的画面张数。24fps 是电影感,60fps 是丝滑游戏感。

  • 分辨率 (Resolution) :画面的像素大小,如 1920x1080 (1080P)。

  • GOP (Group of Pictures) :一组以 I帧(关键帧) 开头的画面序列。

    • I帧 (Intra) : 关键帧,完整图片。
    • P帧 (Predicted) : 差异帧,只记录与前一帧的差异。
    • B帧 (Bi-directional) : 双向差异帧,压缩率最高,但解码最累。
    • 注意:GOP 越长,压缩率越高,但跳转(Seek)越慢,直播延迟越高。

2. 音频核心参数

  • 采样率 (Sample Rate) :每秒记录声音样本的次数(如 44.1kHz, 48kHz)。

    音频的最小单位不是一帧,而是采样 。采样是当前一刻声音的声音样本,样本是需要经过数字转换才能存储为样本数据。数据转换时会根据位深度 转换,而位深度是存储单个样本的数据大小。位深度越大意味着声音的还原度越高。

    过高的位深度需要特殊软件和硬件设备才能播放。 常用的位深度有:8bit,16bit,24bit 等。音视频处理时,低位深度转为高位深度不会提升音质。

  • 位深 (Bit Depth) :每个样本的精度(如 16bit, 24bit)。

  • 声道 (Channels) :同时记录多个位置的声音采样数据;多个声道的样本数据会按声道排列顺序记录。

3. 颜色空间 (Color Space)

  • RGB: 屏幕显示的原理(红绿蓝)。

  • YUV: 视频压缩原理。Y 代表亮度,UV 代表色度。

    • YUV 4:2:0: 常见的压缩采样方式,利用人眼对亮度敏感、色度不敏感的特性。

三、 常见视频编码格式(压缩算法)

播放视频文件时,需要按顺序读取视频文件的一块块音视频数据,这个步骤叫做解封装(demux),读出这些数据后并不能立即播放,因为这些数据是压缩过后的,所以还需要还原成能显示的图像或者音频采样才能播放,这个解压缩的步骤叫做解码(decode),解码过程根据不同的编码格式不同而不同,但一般编码格式都有对应的解码器程序。

编码 名称 特点
H.264 (AVC) 最标准 兼容性最佳,几乎所有设备都支持硬解码。
H.265 (HEVC) 下一代 相同画质下体积比 H.264 小 50%,但浏览器兼容性较差,通常需硬件支持。
VP9 / AV1 开源标准 Google 主导,AV1 是未来趋势,无专利费,压缩率极高。

四、 浏览器基础行为与限制

1. 自动播放策略 (Autoplay Policy)

  • 静音自动播放 :设置 muted 后,浏览器通常允许自动播放。
  • 有声自动播放 :必须由用户产生交互(点击、触摸)后才能触发。
  • 最佳实践<video autoplay muted playsinline>

2. 移动端特殊属性

  • playsinline: 防止 iOS 在播放时强制全屏。
  • poster: 视频加载前的封面图,避免黑屏。
  • preload : metadata (只加载时长宽高), auto (尝试加载全视频)。

3. 调试

  • Chrome Media 面板 : F12 -> More tools -> Media。查看编解码、缓冲、丢帧等。
  • chrome://media-internals: 查看底层详细日志。
相关推荐
蜗牛攻城狮1 天前
CSS中的 `dvh` 与 `vh`: 深入理解视口单位
前端·css
啥都不懂的小小白1 天前
Shell脚本编程入门:从零基础到实战掌握
前端·shell
东东5161 天前
校园短期闲置资源置换平台 ssm+vue
java·前端·javascript·vue.js·毕业设计·毕设
qq_419854051 天前
富文本编辑器
前端
悟能不能悟1 天前
VUE的国际化,怎么实现
前端·javascript·vue.js
Mr Xu_1 天前
解决 Vue + Axios 热更新导致响应拦截器重复注册的问题
前端·javascript·vue.js
岁岁种桃花儿1 天前
NodeJs从入门到上天:什么是Node.js
前端·node.js
colicode1 天前
语音报警接口开发参考:紧急情况下快速调用语音API发送安全警报
前端·语音识别
夏河始溢1 天前
一八四、Zustand 状态管理详解、与 Redux、MobX 的对比分析
前端·javascript·react.js·状态管理·zustand
Code小翊1 天前
TypeScript 核心语法速查
前端·javascript·typescript