基于亚马逊云科技构建音视频直播审核方案

1. 前言

随着互联网内容形态的多样化发展,用户生成内容(UGC)呈现爆发式增长。社交平台、直播、短视频、语聊房等应用场景中,海量的音视频内容需要进行实时审核,以维护平台安全与用户体验。

然而,企业在构建审核系统时通常面临以下挑战:

  • 审核准确性:需要精准识别多种媒介中的违规内容,减少误判率

  • 实时性要求:在直播等场景要求尽可能快地获取结果

  • 成本压力:审核成本高昂,自建审核平台投入大

  • 规则定制:不同场景下的审核标准各异,需要灵活配置

  • 系统稳定性:需要支持高并发且保证服务可用性

基于此,我们将介绍如何利用开源项目,以及亚马逊云科技的服务,包括 Amazon Bedrock、Amazon Rekognition、Amazon SageMaker 等,构建一个性价比高、支持多模态内容审核、响应延迟低、规则可配置的直播、存量音视频审核解决方案。

2.直播审核简介

2.1 直播审核整体架构图

本方案支持基于实时视频流的审核,仅需提供播放链接,即可进行审核。

2.2 直播审核亚马逊云科技架构图

服务简介:

  1. Amazon Lambda:是一项无服务器计算服务,可执行您的代码,可快速帮助您将想法转化为应用程序。

  2. Amazon SQS:适用于微服务、分布式系统和无服务器应用程序的完全托管的消息队列。

  3. Amazon DynamoDB:无服务器、NoSQL、完全托管的数据库,在任何规模下均具有个位数毫秒级的性能。

  4. Amazon ECS:是一项完全托管式容器编排服务,可帮助您更高效地部署、管理和扩展容器化的应用程序。

  5. Amazon Fargate:是一种无服务器的计算引擎,可让您专注于构建应用程序,而无需管理服务器。

  6. Amazon Rekognition:利用机器学习技术自动执行图像识别和视频分析并降低成本,支持内容审核、人脸识别、面孔比较、名人识别等诸多功能。

  7. Amazon Sagemaker:是一站式机器学习平台,支持大规模构建、训练和部署机器学习模型。我们可以在 Amazon SageMaker 中部署 ASR 模型(如 Whipser)。

  8. Amazon Bedrock: 是一项完全托管的服务,通过 API 即可轻松调用 Amazon Nova、Anthropic Claude、Meta Llama、Stable Diffusion 等前沿的高性能基础模型。我们可以通过 Amazon Bedrock 调用 Amazon Bedrock Marketplace 中的 ASR 模型(如 Whisper)。

架构简介:

A. 通过 ApiGateway 发送审核请求到 CreateTask Lambda。

B. CreateTask Lambda 创建 ECS Fargate 任务用于处理直播流(为降低延迟 ECS 中可预置部分 Fargate)。

C. CreateTask Lambda 将审核任务信息(播放链接、用户信息等)存入 ModerationTaskSQS 以及 DynamoDB。

D. ECS 中的 Fargate 服务从 ModerationTaskSQS 获取消息,并处理直播流。

E. ECS 从直播流中截取图片/视频(直播视频的视觉审核,可通过截取直播视频中的图片或者短视频进行审核)、音频文件存入 S3,并将音频/图片/视频审核信息存入 SQS。

F. 图片/视频审核的 SQS 触发 Image/Video ModerationLambda,调用 Bedrock 中的模型/Rekogniton 进行审核。

G. 音频审核的 SQS 触发 Audio ModerationLambda,首先调用 SageMaker 中的 Whisper 进行语音识别,然后调用 Bedrock 中的模型进行审核。

H. 音频/图片/视频审核审核完成后,会将信息存入 Dynamodb,将违规素材存入 S3,同时将信息存入 MessagePush SQS。SQS 会调用 MessagePush Lambda 给用户的回调服务器推送消息。

方案费用:

本方案采用无服务器架构,只需为用量付费,并可享受部分免费套餐。其中部分费用如下:

  • Amazon Nova Micro:进行文本审核,每 1000token 仅需 $0.000035。

  • Amazon Nova Lite:进行图片/视频审核,每 1000token 仅需 $0.00006。

  • Amazon DynamoDB:免费提供 25GB 的存储量以及每月最多 2 亿次读/写请求(永久)。

  • Amazon SQS:每月免费提供 100 万的请求(永久)。

  • Amazon Api Gateway:每月接收 100 万次 API 调用(12 个月内)。

  • Amazon Lambda:每月免费提供 100 万个请求(永久)。

  • Amazon Rekognition:每月可以免费使用 Rekognition 分析 1000 张图像(12 个月内)。

直播审核涉及的技术点主要有直播流处理、音频审核、文本审核、图像审核。

2.3 直播流处理

我们可以通过 FFmpeg 处理直播流。针对直播中的声音,可以通过 FFmpeg 截取音频。针对直播中的图像,可以通过 FFmpeg 截取图片或视频(无声)。

FFmpeg 是一个强大的多媒体处理工具,常用于音视频转码、剪辑、格式转换等。在 AWS 上,除传统虚拟机外,还支持通过 Lambda 或 Fargate 等 Serverless 服务来部署 FFmpeg。通过 Lambda 和 Fargate 部署 FFmpeg 的区别如下:

  • Amazon Lambda 部署 FFmpeg:适用于短时、低频的处理任务,按使用量计费,无需管理服务器,支持高并发。但受 15 分钟执行时间限制,适用于短音视频处理。

  • Amazon Fargate 部署 FFmpeg:适用于长时间、高性能处理任务,自动扩展计算资源。无需管理容器。相比 Lambda,适合复杂和大规模需求的处理。

通过 FFmpeg 从直播流中截取音频的代码如下:

#音频截帧时长
audio_segment_duration=10
audio_dir ="audio"
media_url="lee.mp4"
stream = ffmpeg.input(media_url,)
audio_output_pattern = os.path.join(audio_dir, '%06d.wav')audio_output = ffmpeg.output(stream['a:0'], audio_output_pattern,acodec='pcm_s16le',ar=16000,ac=1,f='segment',segment_time=audio_segment_duration,reset_timestamps=1)

通过 FFmpeg 从直播流中截取图片的代码如下:

#图片截帧频率
snapshot_interval=1
img_dir = "image"
stream = ffmpeg.input(media_url,)
image_output_pattern = os.path.join(img_dir, '%06d.jpg')image_output = ffmpeg.output(stream['v'], image_output_pattern,vf=f'fps=1/{snapshot_interval}',start_number=0
)
通过 FFmpeg 从直播流中截取无声视频的示例代码如下:
#### 小标题
video_output = ffmpeg.output(stream.video, output_pattern,c='copy',f='segment',segment_time=segment_duration,reset_timestamps=1)

下一步我们需要分别对音频及图像(图片或无声视频)进行审核。

2.4 音频审核

音频审核通常需要先将语音转换为文本,再利用文本审核技术识别违规内容。

在本方案中我们在 Audio Moderation Lambda 中调用 SageMaker 中的 Whipser 进行语音识别获取文本。然后调用 Bedrock 中的 Nova/Claude 对文本进行审核。

在亚马逊云科技有多种方式均可实现语音识别,我们以 SageMaker 部署自定义 ASR 模型(如 Whisper)为例。首先在 SageMaker 中创建笔记本实例。

然后在 SageMaker Notebook 中运行以下代码即可部署 Whipser 推理端点。

import sagemaker
import boto3
from sagemaker.huggingface import HuggingFaceModeltry:role = sagemaker.get_execution_role()
except ValueError:iam = boto3.client('iam')role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']hub = {'HF_MODEL_ID':'openai/whisper-large-v3-turbo','HF_TASK':'automatic-speech-recognition'
}huggingface_model = HuggingFaceModel(transformers_version='4.37.0',pytorch_version='2.1.0',py_version='py310',env=hub,role=role
)my_endpoint_name="content-moderation-endpoint-whisper"predictor = huggingface_model.deploy(initial_instance_count=1, instance_type='ml.g4dn.xlarge' ,endpoint_name=my_endpoint_name  
)

在审核项目中使用以下代码即可以调用 SageMaker Endpoint 中的 Whisper 将音频转为文本。

with open(local_file, 'rb') as audio_file:audio_data = audio_file.read()sagemaker_runtime = boto3.client('sagemaker-runtime', REGION_NAME)response = sagemaker_runtime.invoke_endpoint(EndpointName=WHISPER_ENDPOINT_NAME,ContentType='audio/x-audio',Body=audio_data)print(json.loads(response['Body'].read().decode()))

为了提高 Whisper 转录的效率以及提高 Whisper 的准确率,可以在调用 Whisper 之前将音频使用 VAD 进行预处理,从音频中提取人声,然后再将音频文件交给 Whisper 进行识别。

除在 SageMaker 中部署 ASR 模型的方式外,亚马逊云科技还提供多种语音识别(ASR)相关的服务,助力高效音频审核:

  • Amazon Transcribe:完全托管的语音识别服务,基于强大语音模型,为流式或录制音频提供高精度转录,适用于大规模、高实时性场景。

  • Amazon Bedrock:支持通过 API 访问领先的模型,无需管理基础设施,即可调用模型(如 Whisper)。

2.5 文本审核

通过语音识别获取到音频文本后,可以通过 Amazon Bedrock 调用 Nova/Claude 等大语言模型对文本审核。

通过大语言模型进行文本审核的示例提示词如下:

你是一个论坛的审核员,需要维护网络环境,请对下面用户提供的内容进行文本审核,判断是否涉及色情、仇恨、赌博、辱骂等违规内容。我们会根据你反馈的内容,选择是否封禁这段内容。用户提供的内容为:
xxxxxxxxxxxxxxx

通过 Amazon Bedrock 进行文本审核的优势在于高效性、准确性和可扩展性。

  • 它能快速处理海量文本,识别敏感信息、违规内容及潜在风险。

  • LLM 具备上下文理解能力,能更精准地判断语境,减少误判率。

  • LLM 支持多语言,适应性强

  • LLM 能根据规则通过修改提示词的方式自定义优化审核标准。

此外,使用 Amazon Bedrock 进行审核,极具性价比。使用 Nova Micro 进行文本审核,每 1000token 仅需 $0.000035。

*许多基础模型在 API 调用中会重复使用提示词的某些部分。通过提示缓存,可允许在请求中缓存这些重复的提示前缀。该缓存允许模型跳过重新计算匹配前缀的步骤。对于支持的模型,Amazon Bedrock 中的提示缓存可将成本降低多达 90%,并将延迟减少高达 85%。

2.6 图像审核

在亚马逊云科技上我们有两种技术路线可以用来进行图像审核:Amazon Bedrock 中的多模态 LLM 或 Amazon Rekognition 服务,他们的大致特点如下:

Amazon Rekognition:

  • 利用机器学习技术自动执行图像识别和视频分析并降低成本,支持内容审核、人脸识别、面孔比较、名人识别等诸多功能。

  • Rekognition 默认支持 31 个类别的图片审核,并支持用户自定义标签。

  • Rekognition 根据用量每张图审核的价格为 001-0.00025。

Amazon Bedrock:

  • Bedrock 中的 Nova/Claude 模型支持对图片进行批量审核。

message_list = [{"role": "user","content": [{"text": "下方图片为image 1"},{"image": {"format": "png","source": {"bytes": "base64_string"}}},{"text": "下方图片为image 2"},{"image": {"format": "png","source": {"bytes": "base64_string"}}},{"text": "请对图片进行审核."}]}
]
  • Bedrock 中的 Nova Lite/Pro 模型支持视频(无声)进行审核。

#方式1:直接上传视频进行审核
message_list = [{"role": "user","content": [{"video": {"format": "mp4","source": {"bytes": base64_string},}},{"text": "请对该视频进行审核."},],}
]
#方式2:支持直接审核S3中的视频
{"video": {"format": "mp4","source": {"s3Location": {"uri": "s3://my_bucket/my_video.mp4"}}}
}

LLM 审核支持自定义提示词,对审核的规则进行调整。

  • Amazon Nova Lite 每 1000 token $0.00006。

  • Amazon Nova Pro 每 1000 token $0.0008。

*通过 Nova 进行视频审核,极具性价比。下表列出了每个视频长度的帧采样和令牌使用率的一些近似值:

3. 存量音视频审核简介

本方案除直播审核外,同样支持存量音视频的审核。

3.1 长视频/音频审核

如果音视频时长大于 15 分钟,建议使用 ECS 进行对音视频进行截取。

A. 将文件存入 S3,S3 通过事件触发 ModerationTaskSQS。

B. ModerationTaskSQS 触发 CreateTask Lambda。

C. CreateTask Lambda 创建 ECS 任务用于处理音视频文件。

D. AudioVideo ProcessECS 将截取后的音视频文件存入 S3,并将审核信息存入 DynamoDB,同时将审核任务信息存入图像/视频/音频审核的 SQS。

E. 音频/图片/视频审核审核完成后,会将信息存入 DynamoDB。

3.2 短视频/短音频审核

如果音视频时长小于等于 15 分钟,建议使用 Lambda 进行对音视频进行审核。

A. 将文件存入 S3,S3 通过事件触发图像/视频/音频审核的 SQS,然后调用 Lambda 进行审核。

B. 音频/图片/视频审核审核完成后,会将信息存入 DynamoDB。

4. 部署与测试

本方案支持通过 CDK 进行部署。

4.1 直播审核测试

4.1.1 准备直播流

1、在 IVS 控制台创建直播通道

2、在直播通道详情页面,获取推流地址、流密钥与播放地址

3、在 OBS 等推流软件,配置推流密钥/推流地址

*Amazon IVS :互动视频服务,采用与全球知名直播流媒体平台 Twitch 相同的技术,只需几分钟即可构建流媒体互动直播。

4.1.2 直播审核

1、在 OBS 软件点击开启直播

2、调用直播审核接口即可进行直播审核

curl --location 'https://xxxxxx/api/submit_moderation' \
--header 'user_id: [YOUR_USER_ID]' \
--header 'token: [YOUR_TOKEN]' \
--header 'Content-Type: application/json' \
--data '{"url":"https://xxxxxx/xxx/xxx.m3u8"
}'
4.2 存量音视频审核测试

在 S3 存储桶中创建 s3_audio_moderation、s3_video_moderation 文件夹。将音视频文件放入对应的目录即可实现审核。

5. 总结

本文介绍了一种基于亚马逊云服务、ffmpeg 的音视频审核方案。该方案为音视频审核提供了完整的端到端解决方案和参考实现。基于 AWS Serverless 服务,在确保高可用的同时,用户只需为实际用量进行付费。基于 Amazon Bedrock 等服务,可以实现高效的审核,有效帮助用户实现降本增效。

希望本文能够为大家进行音视频审核时提供灵感。如果你对该项目感兴趣,欢迎关注、试用并提出宝贵建议,共同推动审核技术的发展!

*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

参考链接

内容审核项目地址:https://github.com/aws-samples/sample-for-content-moderation

Amazon Bedrock:使用基础模型构建生成式人工智能应用程序 – Amazon Bedrock – AWS

Amazon Nova:https://aws.amazon.com/cn/ai/generative-ai/Nova

Amazon Rekogniton:Amazon Rekognition 图像识别_图片识别服务-AWS云服务

Amazon Sagemaker:Amazon SageMaker 机器学习_机器学习模型构建训练部署-AWS云服务

Amazon IVS:交互式直播流 — Amazon Interactive Video Service — Amazon Web Services

Prompt Caching:缓存请求之间的提示 – Amazon Bedrock 提示缓存 – AWS

本篇作者

本期最新实验《多模一站通 —— Amazon Bedrock 上的基础模型初体验》

✨ 精心设计,旨在引导您深入探索Amazon Bedrock的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式AI模型能力。

⏩️[点击进入实验] 即刻开启 AI 开发之旅

构建无限, 探索启程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux基础操作11------(运行级别)

一.前言 这个是linux最后一章节内容,主要还是介绍一下,这个就和安全有关系了,内容还是很多的,但是呢,大家还是做个了解就好了。 二.权限掩码 运行级别 0 关机 运行级别 1 单用户 ,这个类似于windows安全…

QT+Visual Studio 配置开发环境教程

一、QT架构 Qt Creator 是一个轻量级、跨平台的 IDE,专为 Qt 开发量身打造,内置对 qmake/CMake 的深度支持、Kits 配置管理、原生 QML 调试器以及较低的资源占用维基百科。 而在 Windows 环境下,Visual Studio 配合 Qt VS Tools 扩展则可将 Q…

(2)JVM 内存模型更新与 G1 垃圾收集器优化

JVM 内存模型更新与 G1 垃圾收集器优化 🚀 掌握前沿技术,成为顶尖 Java 工程师 2️⃣ JVM 内存模型更新 👉 点击展开题目 JVM内存模型在Java 17中有哪些重要更新?如何优化G1垃圾收集器在容器化环境的表现? &#x1…

TASK04【Datawhale 组队学习】构建RAG应用

目录 将LLM接入LangChain构建检索问答链运行成功图遇到的问题 langchain可以便捷地调用大模型,并将其结合在以langchain为基础框架搭建的个人应用中。 将LLM接入LangChain from langchain_openai import ChatOpenAI实例化一个 ChatOpenAI 类,实例化时传入超参数来…

springAI调用deepseek模型使用硅基流动api的配置信息

查看springai的官方文档,调用deepseek的格式如下: spring.ai.deepseek.api-key${your-api-key} spring.ai.deepseek.chat.options.modeldeepseek-chat spring.ai.deepseek.chat.options.temperature0.8 但是硅基流动的格式不是这样,这个伞兵…

SpringMVC 通过ajax 实现文件的上传

使用form表单在springmvc 项目中上传文件,文件上传成功之后往往会跳转到其他的页面。但是有的时候,文件上传成功的同时,并不需要进行页面的跳转,可以通过ajax来实现文件的上传 下面我们来看看如何来实现: 方式1&…

Docker安装Fluentd采集中间件

Fluentd 简介 :Fluentd 是一个高性能、可扩展的数据收集与聚合工具,能够统一数据收集和消费,实现各种数据源到各种数据接收器的高效传输,广泛应用于日志收集等领域。 功能特点 : 统一日志收集 :支持从各种…

07SpringMVC底层形象解析

目录 一、基于餐厅比喻的代码示例 ,帮助你理解各组件间的协作关系 1. DispatcherServlet 配置(服务员) 2. HandlerMapping 配置(菜单索引) 3. Controller 实现(厨师) 4. Service 层&#x…

eclipse 生成函数说明注释

在Eclipse中生成函数说明注释(JavaDoc风格)可以通过以下方法实现: 快捷键方式: 将光标放在函数上方输入/**后按回车键Eclipse会自动生成包含参数和返回值的注释模板 菜单方式: 选中函数点击菜单栏 Source > Gen…

【题解-洛谷】P6180 [USACO15DEC] Breed Counting S

题目:P6180 [USACO15DEC] Breed Counting S 题目描述 Farmer John 的 N N N 头奶牛,从左到右编号为 1 …

基于Android的XX校园交流APP

开发语言:Java框架:ssmAndroidJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 APP登录 APP首页…

25、工业防火墙 - 工控网络保护 (模拟) - /安全与维护组件/industrial-firewall-dcs-protection

76个工业组件库示例汇总 工业防火墙 - 工控网络保护 (模拟) 概述 这是一个交互式的 Web 组件,旨在模拟工业防火墙在保护关键工控网络(特别是 DCS - 分布式控制系统)免受网络攻击(如勒索软件传播)方面的核心功能。组件通过可视化简化的网络拓扑、模拟网络流量、应用防火…

kotlin flow的两种SharingStarted策略的区别

一 两种 SharingStarted 策略的区别: SharingStarted.Eagerly: 立即开始收集上游流,即使没有下游订阅者持续保持活跃状态,直到 ViewModel 被清除优点:响应更快,数据始终保持最新缺点:消耗更多资源&#x…

Windows_RustRover Rust语言开发环境构建

Windows_RustRover Rust语言开发环境构建 一、Rust语言简介(一)起源与发展(二)语言特点(三)应用场景(四)社区与生态 二、RustRover(一)主要功能(二…

XCOSnTh-fatfsShell

#include "XCOSnTh.h" #include "ff.h" #include "stdio.h" static char pwd[1024]"1:"; static char pwdCount2; FRESULT lsExe(char *path,int(*printf)(const char* format, ...)) {FRESULT res;DIR dir;FILINFO fno;// 打开根目录…

篇章十 消息持久化(二)

目录 1.消息持久化-创建MessageFileManger类 1.1 创建一个类 1.2 创建关于路径的方法 1.3 定义内部类 1.4 实现消息统计文件读写 1.5 实现创建消息目录和文件 1.6 实现删除消息目录和文件 1.7 实现消息序列化 1. 消息序列化的一些概念: 2. 方案选择&#xf…

中间件-seata

分布式事务seata 角色组成角色指责AT模式TCC模式 角色组成 TC:事务协调者,维护全局和分支事务的状态,驱动全局事务提交或回滚。TM:事务管理者,定义全局事务的范围:开始全局事务、提交或回滚全局事务。RM&am…

python代码绘制某只股票最近90天的K线图、均线、量能图

运行代码,要求输入股票代码和名称,其他参数可省略 import akshare as ak import matplotlib.pyplot as plt import pandas as pd import mplfinance as mpf import matplotlib.dates as mdates import numpy as np import os from datetime import date…

Xilinx 7Series\UltraScale 在线升级FLASH STARTUPE2和STARTUPE3使用

一、FPGA 在线升级 FPGA 在线升级FLASH时,一般是通过逻辑生成SPI接口操作FLASH,当然也可以通过其他SOC经FPGA操作FLASH,那么FPGA就要实现在启动后对FLASH的控制。 对于7Series FPGA,只有CCLK是专用引脚,SPI接口均为普…

Azure 应用服务中的异常处理、日志记录和通知:综合指南

简介 Azure 应用服务是基于云的应用程序,使开发人员能够在云上构建、部署和管理应用程序。与任何应用程序一样,制定适当的异常处理、日志记录和通知实践至关重要,以确保应用程序平稳运行,并快速识别和解决任何问题。在本篇博文中&…