- 29
- 个实验
- 0
- 篇教程
- 9
- 条学习阶段
可运行实验
沿着麦克风输入观察连续信号如何按固定频率取样,再被有限位深映射为可存储的整数。
进入实验 → PCM 音频:采样率、位深与声道布局理解 PCM(Pulse Code Modulation,脉冲编码调制)如何把采样、量化后的幅度编码成数字样本,再计算采样率、位深和声道数共同决定的原始音频数据量。
进入实验 → 数字视频:像素、帧率与 YUV 色彩从一张像素网格扩展到连续帧,理解 RGB 与 YUV/YCbCr 表示,以及 4:4:4、4:2:2、4:2:0 如何减少色度数据。
进入实验 → 原始媒体有多大:为什么必须压缩?计算 1080p、4K 视频和 PCM 音频的原始数据量,建立“压缩不是优化而是前提”的数量级直觉。
进入实验 → 压缩从哪里来:空间、时间与感知冗余拆开现代编码器的共同骨架:先预测,再编码残差,经过变换、量化和熵编码得到更短码流。
进入实验 → I 帧、P 帧、B 帧:画面如何引用过去与未来用帧依赖图理解 I 帧独立编码、P 帧向前参考、B 帧双向预测,以及解码顺序为何可能不同于显示顺序。
进入实验 → GOP 与关键帧:随机访问从哪里开始理解一组图像如何围绕随机访问点组织,以及 GOP 长度对压缩率、启动、Seek、直播延迟和错误恢复的影响。
进入实验 → 码率控制:体积、画质与延迟的三角关系理解编码器如何为简单和复杂画面分配比特,以及 CBR、VBR、CRF、QP 和缓冲模型分别解决什么问题。
进入实验 → 裸码流:NALU、参数集与访问单元进入编码器输出层,理解 H.264 NAL Unit、Start Code 与长度前缀、SPS/PPS 和一帧数据的边界。
进入实验 → 容器与解复用:MP4 不是 H.264理解 MP4、WebM、Matroska 如何把多条音视频码流、时间戳、索引和元数据组织成可定位的媒体资源。
进入实验 → PTS、DTS 与音画同步:什么时候解,什么时候播用 B 帧重排和音频连续播放理解 DTS、PTS、Time Base,以及播放器如何用主时钟决定等待、展示或丢帧。
进入实验 → MP4 边下边播:Fast Start、Range 与 fragmented MP4解释一个 MP4 具备什么布局和服务条件才能尽早起播、支持 Seek,以及普通渐进下载与 fMP4 分段流的区别。
进入实验 → 完整播放链路:从网络字节到屏幕与扬声器把前面的概念连成一条端到端播放管线,观察每个队列的输入输出、线程边界、缓冲目标和失败模式。
进入实验 → 原生解封装与解码:FFmpeg 最小闭环用 FFmpeg 对象关系理解打开输入、查找流、读取 Packet、send/receive 解码和 flush 的完整协议。
进入实验 → 原生音频输出:重采样、环形缓冲与设备回调把解码出的任意音频格式转换为设备格式,用环形缓冲连接解码线程和实时音频回调。
进入实验 → 原生视频渲染:YUV 帧怎样抵达屏幕理解软件解码帧的 YUV Plane、Stride 与色彩转换,以及硬件解码 Surface 通过零拷贝进入 GPU 合成器的路径。
进入实验 → 原生音画同步:时钟、队列与丢帧策略实现以音频为主时钟的视频调度,处理早到等待、轻微漂移校正、严重迟到丢帧与 Seek 后时钟重置。
进入实验 → 原生播放器架构:线程、状态机与资源生命周期把输入、解封装、音视频解码、输出、同步和控制组织成可停止、可 Seek、可恢复的播放器状态机。
进入实验 → 媒体能力体检:浏览器究竟能处理什么?先区分容器、编解码器与浏览器 API,再用能力检测决定播放、处理和录制方案。
进入实验 → 媒体元素:把资源交给浏览器播放管线用程序生成的音频理解媒体元素的资源加载、播放状态、事件与浏览器自动播放限制。
进入实验 → 媒体时间轴:不要把所有“时间”当成同一只钟并排观察页面时钟、媒体播放头与音频时钟,理解调度、展示和同步为何不能只靠 setInterval。
进入实验 → AudioContext:建立一条可编程声音管线创建最小 Web Audio 节点图,用按钮启动振荡器,并观察 AudioContext 的 suspended/running 状态。
进入实验 → 声音图:增益、声像与参数自动化搭建可交互声音图,用滑杆控制响度与左右声像,并用 AudioParam 安排平滑变化。
进入实验 → 音频分析:把听不见的数据画出来将 AnalyserNode 插入声音图,读取时域与频域数据,并绘制实时波形和频谱。
进入实验 → 视频帧回调:跟着真正抵达的画面工作用生成的视频流观察逐帧回调,读取 mediaTime、presentedFrames,并和页面刷新回调对照。
进入实验 → Canvas 视频处理:读取、改写与重新输出像素把生成的视频帧绘制到 Canvas,实时做亮度分级和扫描线效果,观察像素级处理的成本。
进入实验 → 摄像头与麦克风:从权限到 MediaStream在明确点击后申请设备权限,查看 MediaStreamTrack 设置,并学习如何可靠停止采集。
进入实验 → MediaRecorder:把实时媒体流封装成文件录制一个程序生成的 Canvas 媒体流,收集数据块并生成可回放、可下载的 WebM 文件。
进入实验 → WebCodecs:直接面对帧、队列与编解码器创建并检查 VideoFrame,理解 WebCodecs 为何比媒体元素更底层,以及队列背压与 close() 的重要性。
进入实验 →