关于视频处理:分片压缩分片上传融云-IM-视频文件高速传输方案
在 IM 音讯治理中,多种类型音讯的传输解决是服务可靠性的要害。关注【融云寰球互联网通信云】理解更多 通常,发送音讯前,融云 IM 会将发送的媒体文件上传到默认文件服务器。而在文本、表情、图片、语音、地位、小视频等各种音讯中,以小视频的传输对网络等条件的要求最高,其文件更大、上传工夫更长,而上传速度会间接影响收发音讯的体验。支流 IM 利用会将传输的视频文件整体做编码,用户收到视频后须要期待加载后能力查看,这显然会对用户体验造成肯定影响。 在这一细节能力上,融云应用了分片压缩、分片上传的整体计划,对每个步骤做了深度优化,极大晋升视频传输速度,让用户收到即可马上查看视频文件内容。 视频文件分片压缩视频文件通常较大,在资源无限的挪动设施硬件中传输,须要通过分片压缩的形式晋升资源利用率和传输速度。 视频编码视频编码指通过特定技术对视频文件进行编码压缩,以便于网络传输和升高带宽压力。 常见的视频编码方式有 HEVC(H265)、AVC(H264)、DIVX 等,其中 H265 的品质是最高的,但因有些软件或硬件设施无奈兼容,其并不是目前的支流编码格局。 咱们通常抉择 H264 的视频编码格局,等同大小的视频能够放弃绝对较高的清晰度。 视频编码的基本参数次要有码率、帧率、分辨率。码率(比特率),指单位工夫内传送的比特(bit)数,即每秒钟的视频所蕴含的数据量,在分辨率曾经选定的状况下,调低码率可能无效升高视频的大小。码率越小,视频就会越小。 比特率编码次要有恒定比特率(CBR)、可变比特率(VBR)以及多比特率(MBR)编码模式三种编码方式,咱们抉择 CBR,并且调低数值(有些利用无奈设置编码格局,只能调数值),一般来讲比特率越低则视频越小。 帧率,是视频每秒钟播放的图片数目,帧率越小,感触上看到的视频就越卡。一般而言,大于 24 帧每秒对于肉眼来说看到的就是晦涩视频了。 通常,视频帧率放弃在 25~35 即可,过高的帧率对视频品质的进步并不会有太大帮忙,反而会影响导出的效率。 分辨率指视频的精密水平,分辨率越大,视频的内容就越精密。 在这方面,保留视频原有的分辨率即可,如果是高清视频想要舍弃一些清晰度来放大,则能够依照宽高比例进行设置。 压缩原理视频压缩的指标是:在确保清晰度的前提下最大水平升高视频大小。 咱们能够围绕上述视频编码几大因素,重复尝试出一个清晰度较高且最大水平压缩视频大小的规范。 计算视频大小的公式为(音频码率 / 8+视频码率 / 8) x 视频时长。由此可见,通过删减视频长度或降低码率即可达成压缩视频的指标。 时长固定的状况下,管制码率便成为压缩视频的要害。当然,但码率也不可随便极限调低。倘若咱们把分辨率比作一个盒子,码率就是撑起这个盒子须要搁置的物品,多则节约,少则不满进而影响清晰度。 这就须要找到二者之间的最佳比例,罕用的分辨率和码率的抉择区间为: 融云采纳的压缩参数NSInteger bitrate = videoSize.height videoSize.width 2; session.videoSettings = @{ AVVideoCodecKey : AVVideoCodecH264, AVVideoWidthKey : @(videoSize.width), AVVideoHeightKey : @(videoSize.height), AVVideoCompressionPropertiesKey : @{ AVVideoColorPrimariesKey : AVVideoColorPrimaries_ITU_R_709_2, AVVideoAverageBitRateKey : @(bitrate), // 比特率 AVVideoProfileLevelKey : AVVideoProfileLevelH264High40, // 压缩算法 },举例来说,融云默认容许上传 2 分钟时长的视频,通常分辨率 1280x720(720P)下,苹果设施录制视频的原文件大小为 120M 左右,通过压缩后,大小可升高至 44M,保障清晰度的状况下,无效压缩率为 37% 左右。 ...