### 视频编码
常见的有: H.264、 MPEG4、 VP8
前端开发记住: 主流浏览器支持的视频编码是H.264
### 音频编码
CD音质 一分钟数据需要10M
常见的有: WAV、 MP3、 AAC格式
### 封装格式
常见格式有 MP4 AVI RMVB
[image:D8440450-C7B5-4C1B-AC72-AE6CB984B9F2-371-0000B29995403C02/69EA78DF-A280-4002-84EE-AD2970F70E50.png]
视频封装格式和视频编码格式无关,同样的mp4文件,里面的视频流编码可以是 h264 也可以是mpeg-4 就会出现有的浏览器可以播放 有的浏览器放不了
### 码率
也叫比特率,帧率是1s播放多少帧,
比特率是1s的视频有多少bit
决定视频的大小与清晰程度。
Canvas播放视频的解决方案 比较出名的有JSMpeg
和PIXI一样 可以选择WebGL渲染视频也可以直接Canvas渲染视频。
JSMpeg 是没有 npm 包的,但是社区上有开发者基于 JSMpeg 封装了一个 npm 包:https://github.com/cycjimmy/jsmpeg-player
### 视频操作神器 FFmpeg
```shell
ffmpeg -i input.mp4 -f mpegts \
-codec:v mpeg1video -s 640x360 -b:v 1500k -r 25 -bf 0 \
-codec:a mp2 -ar 44100 -ac 1 -b:a 64k \
output.ts
```
* -i:指定输入文件,这里指定为
input.mp4
* -f 指明输出文件的封装格式,这里为 jsmpeg 所需的 mpegts
* -codec:v 指明输出文件的视频编码,这里指明为 jsmpeg 所需的 mpeg1video
* -s 设置视频分辨率,参数格式为w*h或w×h
* -b:v 设置视频码率,一般如果想得到高清的效果,至少需要 4000k 以上,如果对视频体积有要求,可以视情况小一点
* -r 设置帧率(fps),一般都为 25
* -bf bframe 数目控制,一般为 0