主要观点总结
本文主要介绍了自研转码核心的开发背景、架构、模块级可控串/并行流水线、动态自适应转码、码流附加信息管理及总结与展望。自研转码核心旨在覆盖ffmpeg命令行难以实现的业务场景,随着业务需求的多元化,其应用场景也越来越广泛。
关键观点总结
关键观点1: 背景
视频转码是将视频文件经过解封装、解码、滤镜处理、编码、封装转换为另一个视频文件的过程。B站每天都有大量视频原片经过转码系统转换为多个不同分辨率。转换后的视频在画质接近原片的前提下拥有更低的码率,提高网络传输时的流畅性并节省带宽。
关键观点2: 自研转码核心架构
自研转码核心采用FFmpeg基础库作为底层的多媒体处理原子能力,对转码流水线的各模块进行抽象,满足不同业务需求。Controller模块负责所有流水线的帧调度逻辑,包括点播和直播业务的调度逻辑。
关键观点3: 模块级可控串/并行流水线
自研转码核心的每个Task类,可以自由选择以串行/并行的方式运行。直播转码因为对实时性要求很高,使用并行模式可以增加cpu利用率,发挥线上容器多核优势。
关键观点4: 动态自适应转码
直播转码场景需要转码核心具备转码参数动态自适应的能力,包括分辨率自适应和帧率自适应。分辨率自适应可以应对线上变分辨率直播流,而帧率自适应则能应对移动端开播工具根据网络情况动态调整帧率的情况。
关键观点5: 码流附加信息管理
码流附加信息指码流中独立于帧压缩数据之外的数据,在avc编码中指sei信息。自研转码内核调整了sei的写入时机,增加了bsf滤镜统一处理所有avc/hevc/av1 sei的写入。
关键观点6: 总结与展望
自研转码核心的开发旨在覆盖ffmpeg命令行难以实现的业务场景,随着业务需求的多元化,其应用场景越来越广泛。未来会聚焦在提升用户体验和提升转码系统效率两个目标上,并接入AI相关的新功能、玩法到点直播转码中。
文章预览
架构师(JiaGouX) 我们都是架构师! 架构未来,你来不来? 1. 背景 视频转码是将视频文件经过解封装、解码、滤镜处理、编码、封装从而转换为另一个视频文件的过程,B站每天都有大量的视频原片上传后经过转码系统转换为多个不同分辨率。转换后的视频在画质接近原片的前提下会拥有更低的码率,因此会提高网络传输时的流畅性并节省带宽;同时,形形色色的视频原片经过转码后会生成为较为统一、规范的编码规格,也大幅提升了播放时的设备兼容性。 目前业界使用最多的服务端视频转码框架是FFmpeg,它可以处理几乎所有格式的多媒体文件。FFmpeg的转码核心组件是实现了封装/解封装、编解码、滤镜、算法原子能力的基础库,同时,FFmpeg也提供了可以直接运行的命令行工具ffmpeg,实现了简单的转码流水线逻辑。 ffmpeg7之前的串行流水线 随着转
………………………………