A

  1. ZigZag Conversion

这个题的关键是如何控制拐点,以及如何动态地向二维数组里存数据。
隔一段时间需要再回顾一下这个题。

R

https://www.chromium.org/audio-video chromium

这周主要在调研视频动态课件。对于视频,之前了解和使用的不多,所以刚开始想弄清楚的一个问题是:浏览器通过一个 video 标签就能播放视频,视频的加载和渲染到底怎么处理的?通过查看 MDN 上的 video API 文档,了解到 video 的加载过程暴露出很多 event,但是光从 API 的描述文字并不能很明确的把这些 event 的触发时机区分开。于是又翻看 W3C 的 video spec,对 event 的触发时机的理解又增进了一些,不过 spec 对相关 event 的解释都很分散,不太确定自己是不是真的理解到位了。直到搜到这篇文章,把 stalled, suspend, waiting 等触发时机解释地很清晰。

视频会首先加载元数据(包含画面宽高、时长、帧率、码率等信息)(loadedmetadata),等待第一帧数据加载出来 (loadeddata)后可开始播放(canplay)。如果边下载视频流(progress)边进行播放(playing),当本地缓存的视频流数据到达“高水位” 时,浏览器会暂停继续下载视频流(suspend)。随着视频继续播放,本地缓存的数据逐渐被消费,一旦到达“低水位”时,浏览器会恢复下载视频(progress)。如果恰好网络不佳,本地缓存数据被消耗殆尽,此时就会出现视频画面卡住(waiting)。如果缓存数据高于“低水位”而网络不佳时,此时浏览器会尝试等待 3s ,如果 3s 之后还未接收到数据,则会派发一个 stalled 事件用于警告。

从 video 的加载过程可以看到,浏览器在平衡性能和用户体验上是采取了一些策略的。
image.png

T

这周在写视频课件的调研文档,内容很多,写起来花了不少时间,来来回回反复多次调整。其实这说明了一个问题:没有对文档做好一个结构性规划。

本周建议:写文档前先列提纲,先对文档的结构进行规划。这样做有助于明确论述方向或提前发现遗漏之处,也方便进行填鸭式地撰写。就好比写 ARTS 一样,先把 A、R、T、S 几个大标题一列,至于先写哪个后写哪个,随意安排。

S

An Overview of H.264 Advanced Video Coding
主要介绍了下 H.264 解码器是如何编码和解码的。