我看到对于视频网站 切换不同清晰度的解决方案都是弄多个源文件,比如480、720、1080。
但是-----------
我们用百度网盘、阿里网盘、迅雷的云盘,都可以在线播放并且切换不同的清晰度,我们在往云盘空间添加视频的时候,他不可能顺便给你转码多份,然后存起来吧?人家何必浪费这个空间?
尤其是迅雷的云盘,我们把视频添加到云盘以后,直接点击就能原画播放,也可以不同清晰度播放。
那么像这种云盘他们是怎么做到不同清晰度切换的?
我自己尝试用 FFmpeg 写了一份实时转换的接口,可是当转换的时候,CPU 使用率飙涨,如果各个云盘厂商使用的是这种解决方案,恐怕几十几百个用户在线播放视频,处理器使用率就居高不下了,望大佬指教。
附我写的代码,语言是 Node.JS,当用户点击进度条,就会把点击的位置,算出时分秒,叫做startTime 字段传给该接口,然后 FFmpeg 从 startTime 转码到视频结尾,比如用户点击了视频的1分30秒处,该视频总时长为10分,那么 startTime 就是0:1:30.000,把 startTime 赋值给seekInput函数,seekInput可以理解为跳过视频开头多久
至少据我所知,阿里云盘应该是在服务器转码了,看下图,它返回了两个分辨率的视频。