【.com原稿】作者丨徐慧书策划丨徐成杰近年来直播的兴起和短视频的推动整个音视频消费上一个新台阶甚至可以说每个网民都是视频消费用户,其中相当一部分是视频制作用户。作为技术人员,该如何看待当下火热繁荣的视频消费生态?不久前,来自阿里巴巴的高级技术专家、UC播放技术负责人徐惠书就视频、播放器、视频启动技术优化等话题进行了演讲。详细阅读和分享。视频的压缩存储1.容器概念如今,人们每天都会接触到视频。视频文件很大,包含很多信息。要组织这些信息,您需要使用容器。容器可以通过严格的规范来组织和存储视频中的各种信息。这个领域比较好的是mp4。当然,还有一些其他的容器格式可以满足直播、高清等各种差异化需求。容器中存储的最重要的是视频数据本身。视频的原始数据非常大。以1080P电影为例,时长90分钟,帧率为30帧/秒。那是1TB。2。视频压缩的多种方法因此,在存储视频数据时,需要对视频的原始数据进行压缩。视频是由一帧一帧的图片组成,利用人类视觉暂留的特点,通过连续播放形成动画效果。因此,在进行视频压缩时,首先要考虑对单张图片进行帧内压缩,其本质是去除空间上的冗余信息。比如这张图,女神的头发是黑色的。这样,在存储图片时,一个宏块只需要存储一个像素,可以极大地压缩空间冗余信息。.除了帧内压缩,视频压缩还有一个重要的概念——帧间压缩。视频在时间上具有一定的连续性,因此视频中连续出现的图片会有非常大的相似度。面对相似图片时,只存储差异信息,不记录相同信息,可以使视频压缩率保持在很高的水平。除了“量”的要求,视频压缩的“质”要求同样重要。视频压缩是有损压缩。在压缩过程中,需要考虑人的视觉特性,对图像中视觉不敏感的区域进行大范围压缩,对视觉敏感区域进行小范围压缩,以保证尽可能少的视频质量损失.在视频中,每一帧图像都是由像素点组成的,每个像素点又是由亮度和色度两个维度组成的。人们在观看视频时对亮度更加敏感。然而,图像一般由RGB的三基色来描绘,不具有亮度的维度。如果要保证视频在压缩过程中亮度不丢失,就需要引入YUV的概念。YUV是一种新的图像表示形式,Y代表亮度分量,UV代表色度分量。在图像压缩过程中,使用YUV来分离图像的亮度和色度,这样在压缩色度时亮度数据就不会受到影响。YUV的转换公式比较特殊。这个公式不是推导公式,而是来自实验室的实验数据。是通过实验反复大规模验证最终得到的实验参数。Apollo&SecondPlay优化一、认识Apollo播放器Apollo是UC自主研发的一款视频播放器,具有高性能、高可用、高业务服务能力、低资源消耗等优点。Apollo作为自研播放器,在视频播放过程中与其他播放器保持基本一致。首先进行数据采集,然后通过FFmpeg解协议解封装得到原始数据,再进行解码、解压、YUV转换。RGB数据,最后通过PDS进行音视频同步并渲染到相应的驱动设备,实现视频和音频的呈现。Apollo最大的特点是接管了FFmpeg底层的数据网络库,对数据层做了很多优化。2。精准预加载新思路在如今的移动视频消费中,用户最关心的是视频即时直播,而视频即时直播需要视频预加载技术的支持。传统的预加载方案面临着流量消耗和即时播放平衡的挑战。预加载过多会造成资源浪费,预加载过少可能会因为丢失数据导致二次广播失败。传统的预加载方案是从视频文件大小的角度来预加载数据,但是由于每个视频秒播所需要的数据是不同的,传统的预加载方案如估计和特定大小的方法实际上是无法做到正确的数据的准确预加载。在进行预加载的过程中,Apollo以用户的播放为视角,模拟用户播放的行为。当加载的数据满足启动要求时,缓存数据。这样一来,当预加载命中的时候,势必能够实现视频的二次播放。但这也导致了一个新的问题。播放是一个非常耗资源的行为,不可能因为预加载的优化措施而浪费用户资源。因此,我们通过对整个流程的梳理和重构,将FFmpeg分离为FFmpegMediaStream,将其与捆绑的播放流程解耦,作为播放和预加载的通用基础组件。这可以在不启动高资源消耗模块的情况下实现轻量级模拟用户播放。优化案例分享一、Mp3播放优化方案传统的Mp3文件由头文件、音频数据、末尾的版权信息记录组成。播放时会先读取头文件,然后跳到最后读取版权信息,最后跳回到中间读取音频信息并播放。这种读取方式在离线消费时代是没有问题的,但是在在线播放时代,这种读取方式会建立三个HTTP连接,每个连接都会进行一次TCP三次握手。在国内网络比较好的情况下,一次需要100多毫秒,而在公域或者网络条件差的情况下,需要的时间会成倍增加。为了解决这个问题,我们取消了播放时读取版权信息。因为在网络消费时代,这些数据都是通过API获取的,经过大量的数据分析,我们发现Mp3文件末尾的版权信息是无效数据,仅用于格式对齐。因此,这样做不会影响Mp3文件的正常阅读,而且使用这种新的阅读模式可以减少60%的开机耗时。2。Mp4播放优化方案Mp4的结构由MOOV数据头和媒体数据组成。在MOOV数据头中,会详细记录视频中的每一帧信息,所以视频时间越长,MOOV数据头中的数据就越多,这也是看长片时启动速度慢的原因。当然,这仍然是一种理想的情况。现实中,FFmpeg在处理视频时,会默认使用MOOV头,这会使HTTP连接的启动次数从1次增加到3次,进一步增加了启动的耗时。在优化此类场景时,针对这种内部自寻的情况,可以省去之前的连接任务,读取MOOV头数据后,可以复用连接,可以减少一次HTTP连接数。它还可以增加网络吞吐量。这种MOOV后期优化方法可以将Mp4文件的播放性能提升10%以上。3.HLS播放优化方案HLS是苹果推出的流媒体传输协议。它由一个后缀为“.m3u8”的TXT索引文件和指定数量的TS切片文件组成。m3u8文件记录了每个TS文件的时长、顺序和下载链接。HLS视频的基本播放流程是先开始下载m3u8文件,然后同步解析下载文件,然后一个一个的下载TS文件,直到用户播放。但是在长片的播放场景下,TS文件的数量可能多达几千个,会影响视频的播放速度。对于这种场景的优化,我们采用在解析m3u8文件时加入loss分析的方法,在解析到第一个TS文件时开始预下载,解析完m3u8文件后下载第一个TS文件,所以TS文件可以从网络数据的下载转换为本地数据的获取。这样,TS文件的下载效率就会大大提高。总结与展望本次分享主要介绍了视频和移动播放器的概念,以及视频即时播放优化的一些思路和解决方案。未来,更丰富的商业场景将对玩家的极致优化提出更多新的挑战。视频开播全链路的耗时管理,公域和私域视频特征结合的优化提速,将是Apollo技术团队未来的重点研究方向。希望未来能给大家带来更丰富的成果和技术分享。嘉宾介绍了阿里巴巴高级技术专家/UC播放技术负责人徐惠书,负责阿里巴巴创新事业群播放器技术团队,致力于打造业界最快的视频播放器。服务数亿UC国内外浏览器音视频用户,不断提升用户公私域音视频播放体验,拓展阿里集团支付宝、钉钉、高德、天猫精灵、互娱等超级应用和数据十大业务板块的网页&小程序视频播放业务每天承载近30亿次视频播放量。2022年4月9日,在WOT全球科技创新大会“音视频体验优化”的话题中,许慧书老师也将作为演讲嘉宾为大家带来《Android 自研播放器起播性能优化》的演讲。除了常规视频即时播放技术的优化外,主要分享的是基于自研播放器的全链路视频播放的研究成果。内容涉及视频数据加载、预加载、硬解码的进一步优化,以及针对主流格式的针对性优化。此外,来自阿里巴巴、快手、迪士尼等公司的多位资深技术专家也将在本期分享他们在音视频应用体验优化方面的最佳实践经验。【原创稿件,合作网站转载请注明原作者和出处为.com】
