阿里云视频点播服务添加视频字幕的实现方案

简介: 本文给出了一个为视频点播服务里的视频添加字幕的方案。

业务场景

点播服务上传的原始视频没有字幕,需要对点播视频加上视频字幕。

业务流程

  1. 上传字幕文件
  2. 添加带字幕的转码模版
  3. 使用带字幕的转码模版转码

使用步骤

  1. 上传字幕文件
    字幕文件无法通过控制台上传,需要通过上传SDK的上传接口上传,并且指定subtitle参数:
    ```python
    from voduploadsdk.AliyunVodUtils import *
    from voduploadsdk.AliyunVodUploader import AliyunVodUploader
    from voduploadsdk.UploadAttachedMediaRequest import UploadAttachedMediaRequest

def testUploadLocalAttachedMedia(accessKeyId, accessKeySecret, filePath):
try:
uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
uploadAttachedRequest = UploadAttachedMediaRequest(filePath, 'subtitle')
uploadAttachedRequest.setTitle('test upload local watermark file')
media = uploader.uploadAttachedMedia(uploadAttachedRequest, True)
print(media)
except AliyunVodException as e:
print(e)

localFilePath = '/Users/mac/Downloads/VodUploadSDK-Python_1.3.1/dlfiles/subtitle-02.srt'
testUploadLocalAttachedMedia(accessKeyId, accessKeySecret, localFilePath)



2. 设置转码模版
点播控制台的转码模版目前还不支持选择字幕,所以也是通过接口来完成对带字幕转码模版的设置的:

```python
from aliyunsdkcore import client
from aliyunsdkvod.request.v20170321 import AddTranscodeTemplateGroupRequest

clt = client.AcsClient(access_key_id, access_key_secret, region)

def AddTranscodeTemplateGroup(clt):
    request = AddTranscodeTemplateGroupRequest.AddTranscodeTemplateGroupRequest()

    transcodeTemplateList = []
    transcodeTemplate = {}
    # 设置模板名称
    transcodeTemplate["TemplateName"] = "Subtitle_Transcode"
    # 清晰度
    transcodeTemplate["Definition"] = "LD"
    # 视频流转码配置
    videoConfig = {"Width": 640, "Bitrate": 400, "Fps": 25, "Remove": False, "Codec": "H.264", "Gop": "250"}
    transcodeTemplate["Video"] = videoConfig
    # 音频流转码配置
    audioConfig = {"Codec": "AAC", "Bitrate": "64", "Channels": "2", "Samplerate": "32000"}
    transcodeTemplate["Audio"] = audioConfig
    # 封装容器
    container = {"Format": "m3u8"}
    transcodeTemplate["Container"] = container

    # 添加字幕参数
    subtitleList = {"SubtitleUrl":"https://outin-a30b2feff15a11e8ad9400163e1a625e.oss-cn-shanghai.aliyuncs.com/subtitle/D973C24DA668448A80E235F9D020BEFE-3-3.srt",
        "CharEncode":"UTF-8"}
    transcodeTemplate["SubtitleList"] = subtitleList
    request.set_TranscodeTemplateList(json.dumps(transcodeTemplateList))
    request.set_Name('subtitle')

    response = clt.do_action_with_exception(request)
    return response

print AddTranscodeTemplateGroup(clt)

代码里subtitleList参数是设置字幕的,里面的SubtitleUrl参数填写第一步中返回的FileURL地址

  1. 使用带字幕的转码模版转码
    这里可以通过控制台的媒体处理选项选择上面创建的转码模版,或者通过转码接口来实现转码:
    ```python
    from aliyunsdkcore import client
    from aliyunsdkvod.request.v20170321 import SubmitTranscodeJobsRequest

clt = client.AcsClient(access_key_id, access_key_secret, region)

def SubmitTranscodeJobs(clt):
request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest()
request.set_VideoId('4bee0ee927ad4bed8ca865471c6680a7')
request.set_TemplateGroupId('89a90b2cb8fdfdf9765747dd39fae31e')
response = clt.do_action_with_exception(request)
return response

print SubmitTranscodeJobs(clt)

```

  1. 播放通过上面转码模版转码后的视频就会有字幕的效果了

image.png

目录
相关文章
|
11月前
|
XML 自然语言处理 数据可视化
免费!文本表格不会总结、分析?文本表格可视化!帮你轻松解决困扰,保姆级级教程。【附Coze工作流】
本文介绍了如何利用“扣子”平台创建资源,通过可视化工作流处理并分析文档、表格、PDF等内容,帮助用户快速获取文件核心信息。内容涵盖登录、资源创建、工作流配置及运行操作,适用于多种文件格式,如CSV、Excel、PDF等。
4627 4
|
5月前
|
人工智能 机器人 API
10分钟搭建专属AI助手:OpenClaw接入Telegram完整教程(含阿里云轻量服务器部署+常见问题)
OpenClaw(Clawdbot)作为开源AI智能体框架,能通过自然语言指令完成自动化任务,而Telegram是全球流行的即时通讯工具,两者结合可打造跨平台的专属AI助手。本文基于2026年最新稳定版,从阿里云轻量服务器购买到Telegram机器人接入,再到新手避坑指南,全程图文并茂、代码可直接复制,助力零基础用户快速搭建AI助手,实现24小时在线响应、远程控制等功能。
1075 8
|
5月前
|
人工智能 前端开发 Serverless
如何用 Claude AWS配合阿里云函数计算搭建AI应用
企业核心业务在阿里云,却需调用AWS Bedrock的Claude模型?推荐用阿里云函数计算(FC)构建Serverless代理网关:安全隐藏AK/SK、弹性抗并发、网络更稳定。架构为“用户→API网关→FC→Bedrock”,百毫秒延迟,轻量高效。
|
11月前
|
传感器 算法 数据可视化
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
643 4
|
5月前
|
搜索推荐 开发者
阿里云账号实名认证教程方法(快速实名)2026年最新个人和企业用户实名认证全流程
本教程详解2026年阿里云最新实名认证流程:个人用户可通过支付宝扫码快速完成(5分钟内),企业用户支持法人扫脸、企业银行卡/支付宝等4种方式,最快几分钟通过。认证后可申领上云权益。
1194 1
|
8月前
|
数据采集 缓存 网络协议
医疗设备协议对接开发
医疗设备协议对接需实现监护仪、呼吸机等与HIS、EMR等系统间的数据互通,涵盖HL7、DICOM、ASTM等标准及私有协议解析。开发流程包括需求分析、解析开发、数据清洗、网关构建与闭环验证,强调时序性、完整性与安全性。推荐使用Java/Go语言,结合Mirth、Wireshark等工具提升效率。#医疗信息化 #协议对接
|
11月前
|
边缘计算 人工智能 5G
5G加持的AR,不再是PPT里的概念
5G加持的AR,不再是PPT里的概念
285 1
|
数据采集 前端开发 JavaScript
探索技术之路:我的编程之旅与感悟
在数字化时代的浪潮中,编程已成为连接思想与现实的桥梁。本文通过个人经历的叙述,探讨了编程学习过程中的困难与挑战、解决问题的策略以及持续学习的重要性。文章旨在为那些初入编程世界的朋友们提供一些实用的建议和鼓励,同时分享作者对于技术发展的深刻见解。
219 26
|
运维 监控 项目管理
运维工程师的出路到底在哪里?—— 浅谈运维工程师前景
运维工程师的出路到底在哪里?—— 浅谈运维工程师前景

热门文章

最新文章