华为云媒体处理MPC全流程对接实战指南
华为云媒体处理MPC全流程对接实战指南
一、华为云MPC服务核心认知
华为云媒体处理(Media Processing Center,简称MPC)是一款全托管式音视频处理云服务,聚焦视频转码、音频转码、视频截图、水印添加、视频解析、动图生成等核心能力,支持H.264、H.265、MPEG-2等主流音视频编码格式,具备高清低码、倍速转码、画质增强等技术优势,广泛应用于视频点播、直播转码、短视频制作、媒资管理等场景。
MPC服务采用分布式架构,支持弹性扩容与并行处理,无需自建转码集群,大幅降低硬件投入与运维成本。其核心对接逻辑围绕“OBS存储+MPC处理+结果回存OBS”展开,所有待处理媒资必须存储在与MPC同区域的对象存储OBS桶中,且需完成OBS桶授权,确保MPC可访问读取源文件、写入处理结果。
MPC的核心功能模块包含转码管理、模板管理(转码模板、水印模板)、工作流管理、消息通知管理、统计监控五大模块,对接方式分为控制台可视化操作、REST API调用、多语言SDK集成(Python、Java、Go等)三类,适配不同开发场景与技术栈需求。
二、对接前环境准备与账号配置
2.1 账号注册与服务开通
对接MPC服务前,需先完成华为云账号注册与实名认证,未实名认证账号无法开通MPC服务(国际站中国大陆节点需实名认证)。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
服务开通步骤:登录华为云控制台,在顶部搜索框输入“媒体处理MPC”,进入MPC服务控制台,点击“立即开通”,选择服务区域(建议与后续OBS桶同区域,减少跨区域延迟与流量成本),确认开通后即可使用基础功能,新用户可享受一定额度的免费试用资源。
2.2 OBS桶创建与授权配置
OBS桶是MPC唯一支持的媒资存储载体,需创建两个独立桶分别存放原始媒资与处理后结果,便于权限管理与文件隔离。
桶创建步骤:进入OBS控制台,点击“创建桶”,设置桶名称(全局唯一)、区域(与MPC同区域)、存储类型(标准存储,适配高频访问)、权限(私有,避免公开访问),完成创建后,分别创建“源桶(存放原始视频)”与“输出桶(存放转码/截图结果)”。
桶授权是MPC访问OBS的核心前提,未授权会导致任务执行失败。授权步骤:进入MPC控制台,左侧导航栏选择“全局设置-云资源授权”,点击“授权”,选择待授权的源桶与输出桶,确认授权后,MPC服务将获得桶的读取与写入权限,授权状态显示为“已授权”即可。
2.3 认证信息获取(AK/SK与项目ID)
API调用与SDK集成需依赖AK(访问密钥)、SK(秘密访问密钥)与项目ID,用于身份认证与权限校验。
获取步骤:登录华为云控制台,点击右上角“我的凭证”,进入“访问密钥”页面,点击“新增访问密钥”,验证身份后生成AK/SK(仅生成时可见,需妥善保存,泄露需立即删除重生成);进入“API凭证”页面,查看对应区域的项目ID,复制保存备用。
2.4 开发环境配置(以Python为例)
Python SDK适配3.0及以上版本,需安装核心依赖库与MPC服务库,执行以下命令完成安装:
# 安装华为云核心SDK
pip install huaweicloudsdkcore
# 安装MPC服务SDK
pip install huaweicloudsdkmpc
安装完成后,可通过“pip list”查看已安装库版本,确保无版本冲突。
三、控制台可视化对接实操
控制台对接适合快速测试、临时任务处理或非开发人员操作,无需编写代码,通过可视化界面完成模板配置、任务创建与结果查看。
3.1 转码模板创建(自定义模板)
MPC提供预置模板(覆盖常见清晰度与格式),也支持自定义模板适配个性化需求,自定义模板步骤如下:
1. 进入MPC控制台,左侧导航栏选择“转码设置-转码模板”,点击“创建模板”;
2. 设置模板名称(如“HD-1080P-H265”)、模板类型(视频转码/音频转码);
3. 配置视频参数:编码格式(H.264/H.265)、分辨率(1920×1080)、码率(2000kbps)、帧率(25fps)、画质参数(开启高清低码);
4. 配置音频参数:编码格式(AAC)、采样率(44100Hz)、码率(128kbps)、声道数(双声道);
5. 配置公共参数:封装格式(MP4)、HLS切片时长(5秒,适配自适应播放),点击“确定”完成模板创建,模板ID自动生成,后续API/SDK调用需使用该ID。
3.2 水印模板创建
若需给视频添加水印,需先创建水印模板,支持图片水印与文字水印,图片水印步骤如下:
1. 左侧导航栏选择“转码设置-水印模板”,点击“创建模板”;
2. 模板名称(如“logo-左下”)、类型(图片水印);
3. 上传水印图片(支持PNG/JPG,建议透明背景),设置水印位置(左下角)、尺寸(100×50)、偏移量(距左10px、距下10px)、水印时长(全程显示);
4. 点击“确定”,生成水印模板ID备用。
3.3 转码任务创建与执行
模板创建完成后,可直接创建转码任务,将OBS源桶中的视频转码后存入输出桶:
1. 左侧导航栏选择“转码管理-转码任务”,点击“创建任务”;
2. 配置输入信息:选择源桶、输入文件路径(如“/source/demo.mp4”);
3. 配置输出信息:选择输出桶、输出路径(如“/output/”)、选择转码模板(自定义模板/预置模板);
4. 可选配置:添加水印(选择水印模板)、开启视频截图、设置任务优先级;
5. 点击“确定”,任务开始执行,返回任务ID,可在任务列表中查看执行状态(等待中、处理中、成功、失败),处理成功后,可点击“输出路径”跳转至OBS查看结果文件。
3.4 工作流自动化配置(核心实战)
工作流可实现“OBS上传文件→自动触发MPC转码→结果回存OBS”的全自动化,无需手动创建任务,适配高频业务场景:
1. 左侧导航栏选择“工作流管理-工作流”,点击“创建工作流”;
2. 工作流名称(如“auto-transcode-workflow”)、输入桶(源桶)、输出桶(输出桶);
3. 配置转码规则:勾选需要的转码模板(支持一进多出,同时生成多种清晰度);
4. 可选配置:开启HLS切片、添加水印、配置消息通知(任务状态变更时推送消息);
5. 点击“确定”,工作流创建完成,后续上传视频至输入桶,将自动触发转码任务,全程无需人工干预。
四、REST API对接详解(含请求示例)
API对接适合后端服务集成、自动化任务调度场景,基于HTTPS协议,采用JSON格式传输数据,认证方式为Token认证或AK/SK认证,核心API包含模板管理、任务管理、水印管理、截图管理四类。
4.1 认证获取(Token方式)
调用API前需先获取用户Token,用于接口鉴权,请求示例如下:
POST https://iam.myhuaweicloud.com/v3/auth/tokens
Content-Type: application/json
{
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "你的华为云账号",
"password": "你的登录密码",
"domain": {"name": "你的账号名"}
}
}
},
"scope": {
"project": {"name": "你的项目名称"}
}
}
}
请求成功后,响应头中“X-Subject-Token”即为有效Token,有效期24小时,后续接口请求需在请求头中携带“X-Auth-Token: 你的Token”。
4.2 自定义转码模板API调用
接口地址:POST https://mpc.{region}.myhuaweicloud.com/v1/{project_id}/template/transcodings
请求示例(创建1080P H.265模板):
Headers:
X-Auth-Token: 你的Token
Content-Type: application/json
Body:
{
"template_name": "API-HD-1080P-H265",
"video": {
"codec": 2,
"bitrate": 2000,
"width": 1920,
"height": 1080,
"frame_rate": 25
},
"audio": {
"codec": 1,
"bitrate": 128,
"sample_rate": 44100,
"channels": 2
},
"common": {
"pack_type": 1,
"hls_interval": 5
}
}
响应成功(201 Created):返回模板ID,如{"template_id": 10001}。
4.3 提交转码任务API调用
接口地址:POST https://mpc.{region}.myhuaweicloud.com/v1/{project_id}/transcodings
请求示例(带水印转码):
Headers:
X-Auth-Token: 你的Token
Content-Type: application/json
Body:
{
"input": {
"bucket": "你的源桶名称",
"location": "你的区域",
"object": "/source/demo.mp4"
},
"output": {
"bucket": "你的输出桶名称",
"location": "你的区域",
"object": "/output/"
},
"trans_template_id": [10001],
"watermarks": [{
"template_id": 20001
}],
"priority": 9
}
响应成功(201 Created):返回任务ID,如{"task_id": 30001}。
4.4 查询任务状态API调用
接口地址:GET https://mpc.{region}.myhuaweicloud.com/v1/{project_id}/transcodings?task_id=30001
响应示例:
{
"task_id": 30001,
"status": "SUCCEED",
"create_time": "2026-06-10T12:00:00Z",
"end_time": "2026-06-10T12:05:00Z",
"input": {...},
"output": {...}
}
状态说明:INIT(初始化)、WAITING(等待中)、PROCESSING(处理中)、SUCCEED(成功)、FAILED(失败)、CANCELED(已取消)。
五、Python SDK集成实战(完整代码)
Python SDK封装了API请求逻辑,简化集成流程,支持AK/SK直接认证,无需手动获取Token,以下为完整集成代码,包含客户端初始化、模板创建、任务提交、状态查询四大核心功能。
5.1 完整代码实现
# coding: utf-8
import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcore.http.http_config import HttpConfig
from huaweicloudsdkmpc.v1 import *
# 配置参数(替换为自己的信息)
AK = os.environ.get("SDK_AK", "你的AK")
SK = os.environ.get("SDK_SK", "你的SK")
PROJECT_ID = "你的项目ID"
ENDPOINT = "https://mpc.cn-north-1.myhuaweicloud.com" # 对应区域的endpoint
REGION = "cn-north-1"
SOURCE_BUCKET = "你的源桶"
OUTPUT_BUCKET = "你的输出桶"
# 初始化客户端
def init_mpc_client():
# 配置HTTP参数
config = HttpConfig.get_default_config()
config.ignore_ssl_verification = False # 生产环境关闭SSL忽略
config.timeout = 10 # 超时时间10秒
# 认证信息
credentials = BasicCredentials(AK, SK, PROJECT_ID)
# 创建客户端
client = MpcClient.new_builder(MpcClient) \
.with_http_config(config) \
.with_credentials(credentials) \
.with_endpoint(ENDPOINT) \
.build()
return client
# 创建转码模板
def create_trans_template(client):
try:
request = CreateTransTemplateRequest()
request.template_name = "SDK-HD-1080P"
# 视频参数
video = Video(
codec=2, # H.265
bitrate=2000,
width=1920,
height=1080,
frame_rate=25
)
# 音频参数
audio = Audio(
codec=1, # AAC
bitrate=128,
sample_rate=44100,
channels=2
)
# 公共参数
common = Common(
pack_type=1,
hls_interval=5
)
request.video = video
request.audio = audio
request.common = common
# 发送请求
response = client.create_trans_template(request)
print(f"模板创建成功,模板ID:{response.template_id}")
return response.template_id
except exceptions.ServiceResponseException as e:
print(f"模板创建失败:{e.error_code} - {e.error_msg}")
return None
# 提交转码任务
def submit_trans_task(client, template_id):
if not template_id:
return None
try:
request = CreateTranscodingTaskRequest()
# 输入信息
input_info = ObsObjInfo(
bucket=SOURCE_BUCKET,
location=REGION,
object="/source/demo.mp4"
)
# 输出信息
output_info = ObsObjInfo(
bucket=OUTPUT_BUCKET,
location=REGION,
object="/output/"
)
request.input = input_info
request.output = output_info
request.trans_template_id = [template_id]
request.priority = 9
# 发送请求
response = client.create_transcoding_task(request)
print(f"任务提交成功,任务ID:{response.task_id}")
return response.task_id
except exceptions.ServiceResponseException as e:
print(f"任务提交失败:{e.error_code} - {e.error_msg}")
return None
# 查询任务状态
def query_task_status(client, task_id):
if not task_id:
return
try:
request = ListTranscodingTaskRequest()
request.task_id = [task_id]
response = client.list_transcoding_task(request)
if response.tasks:
task = response.tasks[0]
print(f"任务ID:{task.task_id}")
print(f"任务状态:{task.status}")
print(f"创建时间:{task.create_time}")
print(f"结束时间:{task.end_time}")
except exceptions.ServiceResponseException as e:
print(f"查询失败:{e.error_code} - {e.error_msg}")
if __name__ == "__main__":
# 初始化客户端
mpc_client = init_mpc_client()
# 创建模板
template_id = create_trans_template(mpc_client)
# 提交任务
task_id = submit_trans_task(mpc_client, template_id)
# 查询状态
query_task_status(mpc_client, task_id)
5.2 代码说明与运行
1. 环境变量配置:生产环境建议将AK/SK通过环境变量注入,避免硬编码泄露;
2. 客户端初始化:指定对应区域的endpoint,确保与OBS桶同区域;
3. 异常处理:捕获ServiceResponseException异常,打印错误码与错误信息,便于问题排查;
4. 运行方式:保存代码为mpc_demo.py,执行“python mpc_demo.py”,即可完成模板创建、任务提交与状态查询全流程。
六、常见功能扩展与最佳实践
6.1 视频截图功能配置
MPC支持按时间点、按间隔、按帧数截图,可通过控制台或API配置,API请求示例(按间隔截图,每10秒截1张):
{
"input": {...},
"output": {...},
"thumbnail_para": {
"type": "TIME",
"interval": 10,
"format": 0,
"max_length": 480
}
}
6.2 消息通知配置(SMN)
通过华为云SMN服务,可配置任务状态变更通知(短信、邮件、HTTP回调),配置步骤:进入MPC控制台→全局设置→消息通知→绑定SMN主题,任务成功/失败时将自动推送通知,适配实时监控场景。
6.3 计费说明与成本优化
MPC计费模式为按需付费+预付费套餐包,核心计费项:视频转码(按输出时长计费,H.265比H.264更便宜)、音频转码、视频截图(按张数计费)、水印添加(免费)。
成本优化建议:1. 优先使用H.265编码,降低转码费用;2. 同区域OBS与MPC,避免跨区域流量;3. 高频任务购买套餐包,比按需付费节省30%以上;4. 及时清理无用模板与历史任务,减少资源占用。
6.4 常见问题排查
1. 任务失败(OBS权限不足):检查OBS桶是否授权MPC,重新授权后重试;
2. 转码无画面:模板配置错误,检查是否勾选“禁用视频”,重新创建模板;
3. SDK连接超时:核对endpoint是否正确、网络是否连通、安全组是否放行MPC端口;
4. 工作流不触发:检查输入桶是否正确、工作流是否启用、文件上传路径是否匹配。
七、总结
华为云MPC对接核心流程可概括为“环境准备(账号/AK/SK/OBS)→模板配置(转码/水印)→任务执行(控制台/API/SDK)→结果查看与监控”,三种对接方式各有优势:控制台适合快速测试,API适合后端集成,SDK适合简化开发。
通过OBS+MPC+SMN的组合,可搭建高效、稳定、低成本的媒体处理平台,适配视频点播、直播、短视频等各类业务场景。掌握本文的对接流程、代码示例与最佳实践,可快速完成MPC服务的业务落地,同时通过成本优化策略降低使用成本,提升业务竞争力。
八、常见问答
Q1:MPC支持哪些音视频格式转码?
A1:支持视频编码格式H.264、H.265、MPEG-2、MPEG-4、VP6/7/8/9等,音频编码格式AAC、MP3、WAV等,封装格式MP4、FLV、HLS、MPEG-TS等。
Q2:OBS桶和MPC必须同区域吗?
A2:建议同区域,跨区域会产生额外流量费用,且延迟更高;若必须跨区域,需手动配置跨区域授权,且成本会增加。
Q3:MPC转码任务执行时间多久?
A3:取决于源视频时长、分辨率、转码模板,一般1小时1080P视频转码需5-10分钟,高并发时可能排队延迟。
Q4:如何获取MPC的AK/SK和项目ID?
A4:登录华为云控制台→右上角“我的凭证”→“访问密钥”生成AK/SK,“API凭证”查看对应区域项目ID。
Q5:MPC转码后的视频如何在线播放?
A5:转码后视频存储在OBS输出桶,可通过OBS生成临时签名URL播放,或绑定CDN加速域名,通过CDN节点分发播放,适配高并发场景。
Q6:MPC是否支持视频画质增强?
A6:支持,MPC提供画质增强功能,可修复老旧、模糊视频,提升清晰度,在转码模板中开启“画质增强”参数即可。



