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

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


一、 视频文件结构

一个视频文件一般是由文件信息和音视频文件组成,视频文件的结构因不同封装格式而不同。视频格式分为封装格式和编码格式,封装格式决定的是视频文件的结构,音视频数据块的大小等,而编码格式决定的是音视频的压缩的方式及算法。前端开发中主要关注的是封装格式,即常见的 .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: 查看底层详细日志。
相关推荐
数研小生4 小时前
亚马逊商品列表API详解
前端·数据库·python·pandas
你听得到114 小时前
我彻底搞懂了 SSE,原来流式响应效果还能这么玩的?(附 JS/Dart 双端实战)
前端·面试·github
不倒翁玩偶4 小时前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
前端·npm·node.js
奔跑的web.4 小时前
UniApp 路由导航守
前端·javascript·uni-app
EchoEcho4 小时前
记录overflow:hidden和scrollIntoView导致的页面问题
前端·css
Cache技术分享4 小时前
318. Java Stream API - 深入理解 Java Stream 的中间 Collector —— mapping、filtering 和 fla
前端·后端
竟未曾年少轻狂4 小时前
Vue3 生命周期钩子
前端·javascript·vue.js·前端框架·生命周期
TT哇4 小时前
【实习】数字营销系统 银行经理端(interact_bank)前端 Vue 移动端页面的 UI 重构与优化
java·前端·vue.js·ui
蓝帆傲亦4 小时前
Web前端跨浏览器兼容性完全指南:构建无缝用户体验的最佳实践
前端