欢迎光临散文网 会员登陆 & 注册

LVS 《视频生产环境下的播放体验》专题PPT反稿

2020-11-04 12:48 作者:暗切线  | 我要投稿

上周六讲完了,官方录像、会场记录还没出。先放PPT和简单的演讲大纲。反正我自己的场,不太涉及版权问题。但是肯定没人家官方记录的好。

Que一下官网:https://www.livevideostack.cn/ 大家可以实时关注下新的动态。下一场大会在旧金山。估计你们也去不了(反正我也去不了)。

PS: 斗鱼《HEVC Web解码》和B站的《视频质量评价》专题也非常有趣。可惜B站的PPT确定不公开了。至于B站圆桌专题。。并不是很技术。有兴趣当CTO的可以康康。

言归正传

MediaTrack是个怎样的业务
  • 用户上传音频/视频文件,邀请协同人员。审查片子。修改片子。上传更新版本

  • 核心功能点

    • 版本管理/流程控制

    • 协作:审看、批注

    • 传输/存储/转码/加密


多且复杂的用户工作流
工作流梳理
  • 用户工作流

    • 用户工作流存在共通点和机会。在制作环节切入,需要尽量符合他们在工作栈上的使用习惯和要求。

    • 高度依赖工作栈、同步工具不能完全取代工作栈。就像Git无法取代IDE和编程语言。

    • 不同行业在使用过程中,工作流程差别较大。

视频工作栈
  • 视频工作栈

    • 要求:精准控制到帧

    • 下半部分:标注、时间轴控制区

    • 上半部分:资源管理区、视频播放区、参数调整区(主视角)

音频工作栈(单轨视角)
音频工作栈(多轨视角)


  • 音频工作栈:

    • 单轨:波形图、电平、频谱

    • 多轨:轨道、轨道波形、轨道电平和轨道效果

    • 右侧:(主视角)

    • 左侧:参考视频、资源、特效资源

其他类型工作栈
  • 其他类型工作栈

    • ……

    • 字幕:字幕环节

    • 特效处理:视频制作环节

    • 文档处理:剧本创意环节

用户对播放器的要求
  • 用户对播放器的要求:

    • 使用习惯不同、不可以有专业性术语错误。

    • 音频、视频需要更精准的控制:精确到帧、快速seek到有语音的时间点、波形判断是否符合交片要求(重要)

    • 支持音视频和音视频以外所有相关格式的播放。如字幕、文档、特效等。

  • 与传统播放器的区别

    • 传统播放器:

      • 用户可见部分:看、播放控制、弹幕等

      • 用户不可见部分:缓存控制、解封装、解码、播放日志等

    • 协作播放器

      • 用户可见部分:看、精准播放控制、批注展示

      • 用户不可见部分:缓存控制、解封装、解码、音频视频参数解析、格式支持、播放日志等

整体架构
层级拆解
  • 内核层

    • 视频解析控制

      • HLS

      • 私有解密模块(WASM/NodeAddon

    • 音频解析控制

      • 私有解密模块(WASM/NodeAddon

      • 波形图分析模块

    • PDFImageSubtitle 解析模块

    • 时间轴管理模块

      • 单文件

      • 多文件:虚拟时间轴

    • 批注模块

      • 批注渲染模块

      • 批注编辑模块

界面层部分展示
界面层结构
  • 界面层:

    • 主展示区

      • 音频、视频、PDF、字幕、图片、特效(预留,暂时没做)

    • 进度条、批注条

    • 控制条

Ext层
  • Ext层:主要负责批注展示、音视频基础信息展示、批注输入发送

坑点1:非固定帧率
  • 之前是记录了PTS进行逐帧播放

  • 出现问题

    • 可变帧率一般是在转码(用户管它叫压制)环节产生、实际在制作中工作栈都是不可变帧率进行制作。用户习惯上其实是需要时间间隔相同的逐帧播放

  • 一个例子:

    • 蝴蝶的一个运动曲线,在制作环节,并不是匀速运动,而是做的一个贝塞尔曲线,让蝴蝶更为生动。

    • 审看环节,特效师剪辑师再检查问题时,逐帧播放看的是运动位置间隔是否正确。先距离短、再距离长、再距离短。

    • 可变帧率的模式下,会对用户的判断造成一定影响

  • 按照目标FPS等时seek

波形图坑点
采样坑点
  • 音频:波形图采样

    • 最初是我们比较习惯的降低采样率做的一个小的wave文件读取渲染。

    • 问题:

      • 音频采样是还原音波。而工作栈中,缩小后展示的是波峰波谷的数值,一边用户更好的判断响度值。而直接降低采样无法还原到工作栈的显示效果

    • 解决:

      • 服务端魔改FFMPEG取区段最大值

      • 前端取区段最大值

展示坑点
解决方案
  • 上线后发现在播放过程中有的时候会模糊

  • 问题成因

    • WebGL渲染区间在[-1,1],而单个线的判断实际是个小数的[x.y]对应到实际渲染时,不一定刚好是那个像素点完整展示单个线。造成实际渲染时,显卡给出的显示是算了两条线的色彩均值,造成模糊。

  • 解决

    • 根据实际像素,调整渲染

批注时间坑点
批注位置坑点
  • 注展示:

    • 位置差异:服务端压缩时候可能会改变分辨率,需要记录的是百分比。

    • 时间差异:部分视频本身有个 StartTime、转码后HLS的音频StartTime 和视频StartTime不一致,为了降低首帧时间,取得他俩的最小值,这里需要重新找准。目前是以首个视频帧的时间

  • 总结展望

    • 还有些模块没写:如特效模块、

    • 还有些问题没有解决:

      • 字幕渲染时候,字体不一定存在。还原的效果就和字幕工具中的不一致。

      • 字幕特效(ASS)取的绝对定位。渲染大小可能产生差异。需要取源文件的宽高重新算比例。

最后 群:711929228   

进群问题:OpenGL shader最常用的两个Shader ? 

vertext fragment (一个算顶点的,一个算颜色的。)

PS:有问题的话,麻烦私戳我时候,给个报错信息,以及源文件~谢谢啦~


LVS 《视频生产环境下的播放体验》专题PPT反稿的评论 (共 条)

分享到微博请遵守国家法律