前言
之前的《自建CDN解决网站视频卡顿》文章里我们解决了网站视频卡顿的问题。但很多站长在第一次往网站放视频时,遇到的其实是更实际的问题:一个视频传上去,文件大得离谱,访客点开半天缓冲不出来;好不容易能放了,画面还发糊。这就属于是转码的问题了。
今天我们就来聊一聊视频转码是什么、为什么视频又慢又糊多半卡在转码这一步,以及自己动手转码和云转码应该怎么选。
转码是什么
先把视频文件的构成说清楚。一个视频文件其实是两层东西:外面一层叫容器,比如 MP4、MKV,可以理解成"盒子";里面则装的是编码,比如 H.264、H.265,是画面和声音的"装法"。我们平时说的格式,很多时候就是混着指的这两层。
转码,就是把视频从一种编码或参数,转成另一种编码或参数。具体能转的东西不少:
分辨率:1080p 转 720p、480p,生成不同清晰度的版本;
码率:码率决定每秒用多少数据描述画面,直接决定文件大小和清晰度的平衡;
编码格式:老格式转 H.264、H.265,兼容性和压缩率都会变化;
截图:从视频里抽出某一帧存成图片,用来做封面和缩略图。
要注意的是,转码是"重新拍一遍"级别的计算活:每一帧画面都要解码再编码,吃的就是 CPU/GPU 算力。

视频为什么又慢又糊
理解了转码是什么,回头看那两个常见问题,就能理解大概原因了。
慢,慢在原始文件太大。手机直出的一分钟 4K 视频,动辄几百MB——原片是给"存着看"设计的,码率高、体积大。直接传到网站,不仅上传慢,访客点开时,服务器得把整个大文件往下吐,加载自然也很慢。如果转码成 720p 加上合理的码率,体积常常能降到原来的几分之一(具体取决于画面内容复杂度),上传和加载的压力一下子就小了。
糊,糊在"只有一档"。访客的带宽五花八门,有人百兆光纤,有人地铁里刷 4G。视频只有原片这一档时,带宽跟不上的访客只能被播放器硬撑——要么频繁卡顿,要么越播越糊。在转出多档清晰度之后,播放器就能按网络状况自动切换:网好自动上高清,网差自动降流畅,体验完全就是两回事。
自己转码还是云转码
转码绕不开算力,那算力从哪来?无非两条路。
自己转码,最常见的工具是 ffmpeg——命令行里最通用的音视频处理工具,免费、功能全。
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -c:a aac output.mp4 这条命令把视频缩到 720p 再用 H.264 压一遍。本地转的好处是完全免费、想怎么调都行;代价是吃机器——转码是出了名的吃 CPU 的活,视频一多,自己的电脑或者服务器就得陪着重负荷跑,而且批量处理、盯进度都得自己来。
云转码,把转码任务交给云服务:上传原片,云端转好,多清晰度、封面截图一并产出。不吃自己机器的资源,也不占自己的时间,按用量计费,适合视频多、更新勤的站点。代价是多了一笔服务支出,且原片要先传到云端。
怎么选不复杂:
偶尔放个视频、量很小,本地 ffmpeg 足够;
视频是站点的常规内容、成批地来,云转码的省心和吞吐优势就出来了。
云转码能接什么活
以我实际在用的 VMRack 云转码为例,它现在每月免费送 200 分钟转码额度和 1000 张截图额度,小站点的量用下来基本不愁。它接的活大致是三类:
多清晰度转码:一个原片转出几档清晰度,播放端自适应切换,前面说的"糊"就交给了它;
自动截图:按设定抽帧出图,封面、列表缩略图不用人工挨个截;
批量流水线:视频一批批来,任务排队自动跑,不用人守着。
当然也别把云转码想成万能:它解决的是"视频处理"这一段,视频存哪、怎么分发出去,还是要靠对象存储和 CDN 打配合,整条链路一起搭才顺畅。
总结
转码就是给视频"换个装法":体积能小、清晰度能分档、兼容性能拉齐,解决上传慢和播放糊这两个老问题。
在转码方式的选择上,量小的本地 ffmpeg 免费够用,量大的云转码省心省机器;两者也不冲突,可以先本地跑通流程、等音视频量起来了再上云,是很常见的走法。
转码管的是"视频多大",对象存储和 CDN 管的是"送到访客面前有多快",三件套配齐,访客的视频体验才有保障。