想了一下前些天,T家视频的团队来学校开了一次讲座,然后我就地去看了一下。虽然知道远古时期的视频编码混乱割据的时代已经远去,但是现在的挑战反而日新月异。现在T家发展得这么大,T的视频业务做得也很大,所以尝试了一些新的技术,当然deep learning啦,分布式,云计算,计算机视觉什么的都是可以有的。不禁感叹拥有大量数据的公司真是可以随心所欲地做一些事情。
从讲技术的一位技术人员那里光明正大地偷偷记下他们的技术栈,大概过了半个小时吧。
可以列出如下的几点:
1. MD5 编码, H264, H265 编码
2. ffmpeg x264 mp4box
3. 计算机视觉库 opencv vlfeat dlib
4. 深度学习相关 caffe tensorflow
5. 系统架构相关 curl mysql php
简述
1. 流媒体的编码技术是在不断向前发展的。 H265从H264发展起来, 并且由于移动互联网的带动, 各家开发移动端的厂商在对流媒体编码技术都有一定的需求。苹果公司自iphone 6s以来就开始支持H265编码技术。这种技术可以在输送同样质量视频的情况下节省一半带宽。本质上H265就是一个压缩算法,它把原始视频压缩后发送到客户端, 在客户端解压显示原始视频。
至于以上记录的MD5编码, 忽略它, 应该是同时讲到的一些视频的保存中用到的。
2. ffmpeg是一个自由软件(free software, 关于自由软件跟开源软件的区别请看GPL, 开源软件是自由软件和商业软件的折中)。
具体来说,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。 FFmpeg是在Linux下开发出来的,但它可以在包括Windows在内的大多数操作系统中编译。这个项目是由Fabrice Bellard发起的,现在由Michael Niedermayer主持。可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式。
ffmpeg 的Github 地址: https://github.com/FFmpeg/FFmpeg
其包含的库有:
3. x264: 一个软件名, 顾名思义用来处理H264相关编码的(不是解码)
mp4box: 同样顾名思义, 用来处理MP4的
他们讲到的东西包括了一些ROI编码的东西和让局部人脸更清晰的技术, 听起来好像没什么意思。
4. 关于计算机视觉和深度学习,其实这两样东西都很耗费资源的, T家内部会搭建一些深度学习的平台, 包括他们的内部云还搭建了可以租用的GPU平台, 用来跑深度学习的东西。目前来看, 在他们的应用中比较少, 主要还是在提取特征, 以及一些脑洞的应用中。比如可以用人脸识别自动筛选自己想看的演员所在的片段(但是在T家的视频上试了一下感觉还很不成熟)。
5. 系统架构什么的看看就好, 毕竟是这么大的流量入口, 这些问题什么的本来就是他们每天都要处理的事情。