一、背景&现状
创作者服务平台作为得物为社区创作者提供的PC端视频发布入口,地位非常重要。且随着功能的升级迭代,用户群体也越来越多。但我们偶尔会收到如下反馈:
- 视频损坏,无法播放
- 视频模糊
- 曝光度问题
- 黑屏,只有声音,没有画面
黑屏,无法播放
低清晰度
曝光异常
黑屏,只有声音
视频的损坏不仅影响用户体验,还可能导致忠诚用户的流失。用户在浏览时看到错误反馈或者无法播放的视频,容易产生挫败感。
第二,流量的上涨导致此类case越来越多,据统计,自2024年4月份开始,通过创作者平台发布的视频可分发视频量较之前上涨多倍。
为提升视频发布的质量和用户体验,视频发布前的检测能力需尽快落地。
二、业界的做法
在视频内容平台兴盛的今天,视频上传和检测方面已经有了一些有力措施,以确保用户上传的视频质量,最大程度地减少损坏视频对用户体验和平台形象的影响,比如服务端检测,创作者在上传完视频后,会立即触发服务端检测功能,经过等待后会反馈给用户信息,不强卡发布。
这一方案是可行的,但也存在些弊端:
- 需要视频上传完成才能拿到完整的文件流进行检测,通常在PC上传的视频文件很大,要等到传完作者才能知道自己的视频有问题,然后再上传,再检测
- 帖子发布时间拉长,增加创作者的等待,从心智上会影响创作者的体验
- 带宽成本
但这一方案有个优秀的点,如对涉黄、涉恐等元素的视频,能同时被检测到并且禁止分发。
三、得物音视频团队的方案
目前得物音视频团队在上传前的预检测这种场景下已有了一套较为完善的方案,那就是使用C+ffmpeg编写好检测代码后再通过Emscripten工具将其打包成WebAssembly的二进制文件使代码运行在web端。
目前这个方案的核心检测能力已应用在得物App发布工具场景使用,其能通过ffmpeg解析视频的元数据,获取其基本信息,如视频尺寸,码率等,能查找目标视频下的视频流,对音频和视频的AVPacket进行验证,检测文件是否损坏,时间轴是否存在异常等等。正常的流程如下:
经过此过程的检测,我们可以排除绝大多数文件格式存在问题的视频文件,下面列出一些常见的文件结构存在问题或者格式不合规的视频:
1.文件的moov不存在
https://videocdn.poizon.com/creator/og/2386746172_96421a9fd8662a848fef2a62ffbc1e63_1730287081103_dur1208dur_w1080h1920.mp4
2.视频帧的NAL结构异常
https://videocdn.poizon.com/creator/og/2376721105_6dc8f934807c2b62b2261227d2b6699b_1730284366880_dur27dur_w720h1280.mp4