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

    文章

    9450

    浏览量

    156166
  • ffmpeg
    +关注

    关注

    0

    文章

    49

    浏览量

    7869
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    发布元服务提交审核

    完成所有应用信息和版本信息的配置后,可将元服务提交至华为方进行发布审核。 登录AppGallery Connect,点击“APP与元服务”。 选择要发布的元服务。 左侧导航选择“应用上架 &
    发表于 12-04 14:23

    发布元服务填写审核信息与联系方式

    填写审核信息 登录AppGallery Connect,点击“APP与元服务”。 选择要发布的元服务。 左侧导航选择“应用上架 > 版本信息”下待发布的版本。 进入“应用审核信息”区域
    发表于 12-01 14:30

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?
    发表于 11-20 06:21

    西格电力面向行业用户的绿电直连架构适配技术与实践路径

    实践路径,成为破解绿电直连“落地难、适配差、效益低”问题的关键,西格电力提供适配行业的绿电直连管理系统,助力绿电直连架构科学落地。
    的头像 发表于 11-18 11:04 122次阅读

    Vector S2S方案在汽车电子电气架构的落地实践

    随着汽车电子电气(E/E)架构从传统的功能域逐步演进到区域化架构,系统复杂度急剧上升。在这种背景下,仅靠在开发阶段精确定义组件与应用间的固定连接,已难以满足现代车辆对灵活性与可扩展性的需求。
    的头像 发表于 11-02 10:10 512次阅读
    Vector S2S方案在汽车电子电气<b class='flag-5'>架构</b>的落地<b class='flag-5'>实践</b>

    分布式光伏环境监测站的技术架构与应用实践

    分布式光伏环境监测站的技术架构与应用实践 柏峰【BF-GFQX】一、系统技术架构解析 分布式光伏环境监测站采用“感知层-传输层-应用层”三层架构设计,实现环境数据的全链路智能化处理。
    的头像 发表于 10-13 10:05 264次阅读
    分布式光伏环境监测站的技术<b class='flag-5'>架构</b>与应用<b class='flag-5'>实践</b>

    光伏实验气象站的技术架构与应用实践

    光伏实验气象站的技术架构与应用实践 柏峰【BF-GFQX】在光伏产业快速发展与新能源科研不断深入的背景下,光伏实验气象站作为获取精准气象数据与光伏性能参数的核心设备,其技术先进性直接决定了科研成果的可靠性与工程应用的实效性。
    的头像 发表于 08-19 08:57 1917次阅读
    光伏实验气象站的技术<b class='flag-5'>架构</b>与应用<b class='flag-5'>实践</b>

    鸿蒙5开发宝藏案例分享---折叠屏开发实践

    ?** 最佳实践案例大揭秘!开发者的隐藏宝藏手册** 大家好呀! 今天在翻鸿蒙文档时突然发现了一个惊天大宝藏——官方其实早就默默放出了 几十个超实用开发案例 ,覆盖折叠屏适配、性能优化、UI框架、跨
    发表于 06-12 11:44

    AIGC算力基础设施技术架构与行业实践

    AIGC算力基础设施技术架构与行业实践 一、硬件层:AI算力的物理载体 芯片技术升级‌ 国际前沿‌:某国际芯片巨头2025年发布的GB200超级芯片采用全液冷设计与新型互联架构,单节点推理性能较前
    的头像 发表于 05-29 07:44 622次阅读
    AIGC算力基础设施技术<b class='flag-5'>架构</b>与行业<b class='flag-5'>实践</b>

    避免生产风险:文件审核在PCBA流程中的作用

    在PCBA制造流程中,从设计文件上传开始,就已经开启了质量控制与风险把控的第一步。对于一站式PCBA服务平台来说,文件审核不仅关乎后续生产的准确性,更直接影响到项目的整体进度和最终交付质量。 很多
    的头像 发表于 04-30 17:55 490次阅读

    RFID系统:驱动智能管理的核心技术架构与应用实践

    在万物互联的数字化时代,RFID(射频识别)系统凭借其非接触式识别、批量读取与实时数据更新等特性,成为企业实现资产、物料及流程智能化管理的核心技术。本文从技术架构、行业应用、实施策略三大维度,系统解析RFID系统如何重构传统管理模式,并为不同领域提供可复用的数字化转型路径。
    的头像 发表于 04-25 17:34 699次阅读

    设备远程监控与预测性维护系统架构设计及应用实践

    本文探讨了在工业4.0与数字化转型背景下,设备管理系统从传统人工巡检向智能运维的深刻变革。文章从技术架构、实施路径和典型应用三个方面深入解析了设备远程监控与预测性维护系统的实现方法。
    的头像 发表于 04-15 10:16 859次阅读
    设备远程监控与预测性维护系统<b class='flag-5'>架构</b>设计及应用<b class='flag-5'>实践</b>

    桃芯科技软件审核简介

    本文档对如何审核一个项目的软件是否符合量产要求进行阐述;审核目的为确保软件足够健全、稳定、易于量产,做出更有品质的产品;该文档不一定会讲清楚每个检测项,但会尽可能提示你如何掌控调整方向。
    的头像 发表于 01-24 09:24 785次阅读

    博泰车联网厦门制造基地顺利通过IPC QML审核

    近日,博泰车联网厦门制造基地经过IPC严格的审核,生产工艺与产品质量符合电子行业国际标准IPC-A-610《电子组件的可接受性》三级产品要求与IPC J-STD-001《焊接的电气与电子组件要求》,顺利通过IPC QML审核,荣列IPC全球可信任资源库,彰显制造实力。
    的头像 发表于 01-02 14:20 992次阅读

    探讨篇(三):代码复用的智慧 - 提升架构的效率与可维护性

    作者:京东物流 冯志文 前两篇从服务粒度和服务内的分层架构角度探讨,本文继续从服务间代码复用角度探讨。 背景 在分布式架构中,代码复用是个难题。那么如何处理代码功能共享的问题呢?本文结合日常实践
    的头像 发表于 12-27 15:58 864次阅读
    探讨篇(三):代码复用的智慧 - 提升<b class='flag-5'>架构</b>的效率与可维护性