0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

视频审核架构实践

京东云 来源:jf_75140285 作者:jf_75140285 2024-08-28 16:54 次阅读

一. 背景与目标

1.1 视频审核背景

现有视频审核系统由于历史原因,针对不同的业务调用方和业务场景提供了多套视频审核技术方案和服务,且在审核时效、支持的协议完整性等方面存在一定的不足;同时,多套系统并存一直存在较高的运维成本的情况。

由此,需要设计一套统一的视频审核系统架构,将多套服务合并为一套服务,提供统一标准视频审核服务,大幅降低运维成本的同时,提供完整的接口协议支持和更高的审核时效。



1.2 设计目标

审核时效优化

◦流式完成下载、拆帧、推理、通知四阶段处理;使得整个审核过程为:边下边拆边推边响应。

◦每阶段内并行处理,提高审核时效。

最终目标:审核时长 = MAX(并行下载、并行拆帧、并行推理)。

wKgaombO5diAR0x8AABadRwgV90401.jpg



完整的接口协议,应对未来不同需求场景:

短视频同步:提供时长1~2分内、100MB内的视频,达成3秒内审核完成的目标;且以同步阻塞接口提供服务,简化业务方调用、交互过程。

长视频异步:支持10小时甚至更长视频的异步审核能力,按调用方需求提供实时响应开关。

实时直播视频流:针对实时直播流,提供边拉流、边审核、边响应的实时流式响应能力。

wKgZombO5dmAFCr1AABEyNMCBcc697.jpg



二. 拆帧技术方案选型

2.1 ffmpeg简要介绍

针对不同的编码器、封装协议、传输协议,提供统一的音视频处理接口。

跨平台,兼容200多种编码、180多种封装格式、20多种传输协议。世界上90%以上的音视频开发基于FFmpeg。



2.2 API vs 命令行

基于API

FFmpeg提供了一整套的音视频处理库,以统一的API分别完成音视频处理过程中的主要阶段,包括:

采集、解封装、解码、处理&转换、编码、封装、传输等。

其中,各个库提供的API粒度较细,非常适合对音频、图片帧做业务细粒度的自定义加工的场景。

ffmpeg库 简介
libavcodec 封装绝大部分编码解码器,提供统一API。
libavformat 封装绝大部分封装格式,针对不同封装格式提供统一API。
libswscale 图片像素格式转换工具库。
libswresample 音频采样格式转换、重采样工具库。
libavfilter 音视频滤镜库。
libavutil 音视频开发过程中的工具函数大全。
libavdevice 摄像头、麦克风等外部设备数据采集API。



基于命令行

基于上述库,FFmpeg提供了可执行命令行工具:FFmpeg。

FFmpeg命令行以组合大量选项、参数的方式完成常规的音视频处理工作,且其本身以c语音实现,为常规音视频处理需求,提供了简单、稳定、高效的支撑;通过高级命令行参数可达成设计目标 :

流式下载:支持Http/flv流等传输协议作为输入,实现边下载边解码。

分段并行:利用ss、to等选项,其内部基于http range seek特性,完成并行多段处理。

自定义音视频参数:利用codec/afilter/vfilter等编解码、滤镜参数可完成输出图片自定义帧率、音频采样、声道等目标。



综合考虑视频审核业务特点,对音视频处理过程本身并不复杂,单纯、核心的目标就是将音频、图片帧从视频中拆分出来,并不存在过多的针对音视频帧的加工处理过程,因此,视频审核架构采用FFmpeg命令行工具完成基础的视频拆帧工作。



三.框架描述

3.1 流式处理框架

wKgaombO5dqAVAbAAABkQ9p6pv0439.jpg

任务处理器是视频审核服务的核心组件,一个任务处理器实例包括三个子组件:拆帧引擎、任务驱动器、审核业务对象。通过任务驱动器的调度过程,协调拆帧引擎和审核业务对象两个对象实例完成一个视频任务的下载、拆帧、推理、响应四阶段流式、并行处理过程。

一个视频审核服务内根据容器cpu资源、配置情况,允许多个处理器实例并行完成多个视频处理任务。



3.1.1 拆帧引擎

拆帧引擎:图片拆帧逻辑图、音频拆帧逻辑图,目标均是流式生产数据。



图片拆帧

wKgZombO5duAYmSvAABtjmFr2dg583.jpg

单一视频任务中,为了完成流式、并行处理目标,图片拆帧模块由两个主任务并行完成:

一是根据视频时间、业务策略,启动多个ffmpeg进程,利用ffmepg的seek机制将视频拆分为多段完成并行下载、拆帧。

二是收集任务,根据拆分出的图片帧时间戳信息生成图片帧信息,供后续推理读取。



音频拆帧

针对音频拆帧存在两种目标:

针对视频文件:采用单一命令完成整个音频文件的拆分,供后续asr、音频审核使用。

针对视频流:相对于视频文件,视频流具有连续性,时间比为1:1,为了达成边拆边推理边响应目标,需要在直播过程中动态切分音频段,完成实时处理和实时响应。

wKgaombO5duAcb69AAC5Scx63vU417.jpg

视频流中的音频处理部分涉及几个主要步骤:

拆段:利用segments机制,完成固定时间段的音频切分。

VAD:基于webrtc VAD模块,遍历PCM文件采样数据,完成有声段音频的拼接&切割。

编码:将原始PCM音频编码为mp3,大幅降低文件尺寸便于传输。

收集:负责收集编码后的mp3文件,生产音频段信息,用于后续推理读取。



3.1.2 审核业务模块

wKgZombO5dyAIk8NAACnyrDJzJ0184.jpg

审核业务对象与任务处理器、调用算法服务进行交互,完成流式、并行的帧(图片、音频)审核业务过程。

审核业务对象内部由单线程驱动,循环检测帧队列、异步推理响应、异步上传响应三个状态,并根据推理、上传结果,在业务策略开启实时响应开关时,动态发送部分响应数据至实时结果队列完成实时响应。



3.1.3 任务调度器

拆帧引擎和业务对象对外部提供了标准的非阻塞状态查询及命令处理接口,围绕这些接口,任务调度器内部由单线程驱动,与拆帧引擎和业务对象进行流式调用交互,这个过程中,拆帧引擎作为帧生产者、业务对象作为帧消费者,任务驱动器将两者进行衔接,从任务处理的角度驱动两者共同完成视频审核过程。



wKgaombO5d2AKZivAACaOIK91mA801.jpg



至此,三者整体完成了核心目标:

下载、拆帧、推理三阶段,每阶段内并行加速。

下载、拆帧、推理、实时通知四阶段流式处理。



3.1.4 多业务场景

wKgZombO5d2AREOpAABch0CkLcU388.jpg

得益于核心组件间的标准接口交互,整个系统可以针对不同的业务场景、需求,将业务对象从主服务中剥离出去,由内部函数调用改为远程RPC调用,并进行分布式部署;使得所有业务在统一的流式、并行框架下,高效完成各种场景需求。



3.1.5 同步&异步处理流程

wKgZombO5d6Ab5UkAAClw0CQ7wQ369.jpg

视频拆帧过程属cpu密集型业务,其任务处理的服务节点优先从cpu负载角度出发,而不是接收请求的节点进行处理;因此,在接收请求后,会将其派发到MQ任务队列中,由cpu闲置的节点通过手动pull方法完成任务获取并处理。

同步与异步不同的点在于,异步任务处理完成后,直接将响应发送到结果队列中,由调用发接收;而同步模式下,需要将结果通过回调的方式,将响应返回到请求接收节点,再由请求接收节点进行同步响应给调用方,内部通过同步对象、超时等机制完成同步调用协议。



3.2 结果服务

wKgaombO5d-ATnQcAABIwvecW0U644.jpg

结果服务与主服务配套,从MQ接收主服务处理过程中发送的各种事件并保存,主要完成几个功能:

请求处理审计:保留一个月的细节结果,供后台查询、分析视频拆帧、审核过程的有效性、及时、快速、方便的审计问题。

提供主动查询接口:调用发发起异步请求后,对比mq接收结果,另一种常见的方式是通过主动调用查询接口进行定时检查的方式获取响应,结果服务提供get接口供调用方主动进行结果查询。

全局重试:主服务所在宿主机、容器宕机时,结果服务内部实现了定时检查机制,当发现视频任务开始处理后,且在一定时间内未响应的情况下,会调用主服务完成任务的重试处理过程,确保视频任务不丢失。



四. 策略配置

系统针对单一视频的整个处理过程中,涉及不同的策略可以进行配置&设置,包括两个方面:

一是框架处理过程,二是审核业务策略,根据不同业务需求,可以进行完成的处理过程配置;

业务方通过输入业务token+策略ID进行服务调用,以完成业务方特定需求,具体可配置策略包含如下:

框架行为策略 业务策略
是否开启中间结果实时通知 审核疑似阈值
分段并行策略 {开始、结束时间、FPS} 审核能力列表
是否并行拆图片帧 
是否预下载,默认边下边解 


下载超时, 仅开启预下载时有效 
拆帧超时 
业务结果等待超时 


视频最大限制,默认4GB。 
视频最长限制,默认俩小时。 



不同模式部署

wKgZombO5eCAVIs0AABtb5ErzHg456.jpg

16c机器情况下,针对不同协议场景,完成集群配置:

集群 目标 Processor 实例数量 Image公共池并行数 图片拆帧是否拆段并行
短视频同步 速度优先,避免 多任务CPU资源冲突 1 4
长视频异步 充分利用资源,允许任务排队 4 4
RTMP视频流 实时流无法拆段并行 16 16



五. 测试验证

经测试验证,在16C容器下达成设计目标:

•1分钟、100MB内视频,2秒内可完成审核。

•长视频异步模式下,对比旧版服务审核时效平均提升5倍。

•优雅退出+全局重试保障任务不丢失。

•标准模块接口为未来扩展为多场景通用分布式系统打下基础。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8597

    浏览量

    151152
  • ffmpeg
    +关注

    关注

    0

    文章

    46

    浏览量

    7403
收藏 人收藏

    评论

    相关推荐

    基于Arm架构的珠峰芯片加速极致视频体验

    视频编解码技术作为支撑超高清视频及泛音视频产业发展的基石,其重要性愈发凸显。H.264/AVC 是目前广泛使用的编解码标准,能够在较低的数据速率下提供高质量的视频流,是在线
    的头像 发表于 11-01 13:54 1111次阅读
    基于Arm<b class='flag-5'>架构</b>的珠峰芯片加速极致<b class='flag-5'>视频</b>体验

    【本周六-北京】智慧家居视频监测系统实战,超多动手实践等你来体验!

    与NXP将联合举办一场主题为“智慧家居视频监测系统实战”的线下培训活动。在此次培训中,我们将展示一系列AI领域的精彩示范,并提供多个实践动手的机会。参与者不仅可以
    的头像 发表于 10-25 16:08 224次阅读
    【本周六-北京】智慧家居<b class='flag-5'>视频</b>监测系统实战,超多动手<b class='flag-5'>实践</b>等你来体验!

    边缘计算架构设计最佳实践

    边缘计算架构设计最佳实践涉及多个方面,以下是一些关键要素和最佳实践建议: 一、核心组件与架构设计 边缘设备与网关 边缘设备 :包括各种嵌入式设备、传感器、智能手机、智能摄像头等,负责采
    的头像 发表于 10-24 14:17 424次阅读

    AUTOSAR架构下,持续集成CI的最佳实践

    集成(CI)流程。今天,我们就来探讨一下基于AUTOSAR架构的CI流程实践,并通过对流程的详细讲解,展示其在实际开发中的重要性和优势。什么是AUTOSAR架构?首
    的头像 发表于 10-24 08:06 479次阅读
    AUTOSAR<b class='flag-5'>架构</b>下,持续集成CI的最佳<b class='flag-5'>实践</b>

    架构与设计 常见微服务分层架构的区别和落地实践

    前言 从强调内外隔离的六边形架构,逐渐发展衍生出的层层递进、注重领域模型的洋葱架构,再到和DDD完美契合的整洁架构架构风格的不断演进,其实就是为了适应软件需求越来越复杂的特点。 可以
    的头像 发表于 10-22 15:34 234次阅读
    <b class='flag-5'>架构</b>与设计 常见微服务分层<b class='flag-5'>架构</b>的区别和落地<b class='flag-5'>实践</b>

    【10/26北京】智慧家居视频监测系统实战,超多动手实践等你来体验!

    ,RT-Thread与NXP将联合举办以“智慧家居视频监测系统实战”为主题的线下培训。我们为大家准备了AI领域的精彩Demo,以及多个动手实践。通过本次培训,工程师不但能够了解
    的头像 发表于 10-16 10:00 275次阅读
    【10/26北京】智慧家居<b class='flag-5'>视频</b>监测系统实战,超多动手<b class='flag-5'>实践</b>等你来体验!

    PoE供电设备布局审核指南

    电子发烧友网站提供《PoE供电设备布局审核指南.pdf》资料免费下载
    发表于 09-24 09:39 2次下载
    PoE供电设备布局<b class='flag-5'>审核</b>指南

    【大语言模型:原理与工程实践】探索《大语言模型原理与工程实践》2.0

    《大语言模型“原理与工程实践”》是关于大语言模型内在机理和应用实践的一次深入探索。作者不仅深入讨论了理论,还提供了丰富的实践案例,帮助读者理解如何将理论知识应用于解决实际问题。书中的案例分析有助于
    发表于 05-07 10:30

    【大语言模型:原理与工程实践】探索《大语言模型原理与工程实践

    处理中预训练架构Transformer,以及这些技术在现实世界中的如何应用。通过具体案例的分析,作者展示了大语言模型在解决实际问题中的强大能力,同时也指出了当前技术面临的挑战和局限性。书中对大语言模型
    发表于 04-30 15:35

    【RTC程序设计:实时音视频权威指南】传输控制优化阅读 及其实践分享

    书中第八章 传输控制优化,主要介绍了拥塞控制,弱网降级,抖动缓存与平滑发送,错误恢复等几个部分的内容。 其中抖动缓存与平滑发送是非常重要的一部分,在实践中是保证音视频实时不断流的传输是必须
    发表于 04-21 17:11

    【RTC程序设计:实时音视频权威指南】本书概览

    ,这都是按照音视频流的开发的一般流程介绍的。然后介绍了编解码以上所技术,信令与媒体协商(个人觉得协商这里用协议更合适,因为里面讲解的是各种音视频传输的协议)。然后是控制传输优化,可扩展架构,评价指标等
    发表于 04-21 17:09

    华为云多模数据库 GeminiDB 架构与应用实践直播问答实录

    龙通过直播(链接见文末)的方式,分享了《华为云多模数据库 GeminiDB 的技术架构及应用实践》,对 GeminiDB 的技术特性、架构优势等进行了全方位解读。整场直播干货满满,让观众们直呼过瘾,并且积极提问,展开了深入交流。
    的头像 发表于 04-08 18:25 1163次阅读

    绿联科技IPO审核状态变更“提交注册”

    近日,深圳市绿联科技股份有限公司(以下简称“绿联科技”)在深交所创业板IPO审核方面取得了显著进展,其审核状态已成功变更为“提交注册”。
    的头像 发表于 03-21 14:06 575次阅读

    晶华电子创业板IPO审核终止

    近日,深圳晶华显示电子股份有限公司(简称“晶华电子”)的创业板IPO审核状态发生变更,由原先的审核中变更为“终止”。据悉,此次终止审核的原因系公司与保荐人主动撤回了上市申请,根据相关规定,深交所决定终止对晶华电子首次公开发行股票
    的头像 发表于 03-14 15:16 744次阅读

    科利德终止IPO审核进程

    大连科利德半导体材料股份有限公司(简称“科利德”)的IPO审核进程已终止。上交所公告显示,由于科利德的保荐人撤销了保荐,因此根据相关规定,上交所决定终止其发行上市审核
    的头像 发表于 03-04 10:47 924次阅读