我们公司这几天在做摄像头对接流媒体服务器推流的测试,突然想起来我好像还没有就直播画面的采集写过什么,所以今天我就来讲一下采集。采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。
采集的方式有两种,目前的安防监控流媒体服务器都用摄像头采集,而直播或者其他方面的采集则可以使用屏幕录制采集。而采集的内容又分为音频采集和图像采集,音频采集和编码主要面临的挑战在于:延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等。图像由于其直观感受最强并且体积也比较大,构成了一个视频内容的主要部分。图像采集和编码面临的主要挑战在于:设备兼容性差、延时敏感、卡顿敏感以及各种对图像的处理操作。
1.摄像头采集
对于视频内容的采集,目前摄像头采集是社交直播中最常见的采集方式,比如主播使用手机的前置和后置摄像头拍摄。在现场直播场景中,也有专业的摄影、摄像设备用来采集。安防监控场景中也有专业的摄像头进行监控采集。
而我们的流媒体服务器提供的 SDK 对以上两类摄像头的采集都支持,对于iOS 和 Android 手机分别支持前置后置摄像头的采集,iOS 由于设备种类和系统版本不多,因此采集模块兼容性较好;而 Android 需要适配的硬件设备和系统则比较多。
2.屏幕录制
屏幕录制采集的方式在游戏直播场景中非常常见。而 iOS 则由于系统本身没有开放屏幕录制的权限而没法直接操作,但对于 iOS 9 以上的版本,是有个取巧的办法,可以通过模拟一个 AirPlay 镜像连接到(当前 App)自身,这样就可以在软件上捕获到屏幕上的任何操作,达到录制屏幕的效果。
在教育直播或者会场演讲场合,我们经常看见需要录制电脑桌面上 PPT 的场景,针对这种场景,目前市面上比较方便的方案是使用开源的桌面推流工具 OBS 来进行屏幕录制和推流:Open Broadcaster Software3.从视频文件推流除了从硬件设备采集视频进行推流之外,我们也可能需要将一个视频或音频文件以直播流的形式实时传输给观众,比如在线电台或者电视节目,它们的输入可能直接来自于一些已经录制剪辑好的视频内容。
对于采集源来说,市场上可见的采集源远远不止这三种,即便是摄像头也有很多分类。对于一个完整的覆盖推流、传输和播放三个环节的直播云服务来说,支持尽可能多的采集源和播放终端是一项既无法规避也很难完成的工作,我们的流媒体服务器研发团队为了能够使播放终端多样化也做出了很大的努力。