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

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

业务场景

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

业务流程

  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

目录
相关文章
|
4月前
|
编解码 关系型数据库 Java
阿里云服务器4核8G最低价格:通用算力型、经济型、计算型等不同实例活动价格参考
阿里云4核8G云服务器是企业级应用、高流量网站及复杂开发测试环境的优选配置。本文解析了通用算力型u2a实例、通用算力型u2i实例、经济型e实例、计算型c9i实例四款主流产品,它们最低活动价分别为898.20元/年、1252.63元/年、1595.11元/年、3147.56元/年起。各实例在性能、架构及适用场景上各有侧重,用户可根据需求与预算选择,并建议购买前领取优惠券以获取额外减免。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
直升机停机坪目标检测数据集(9000 张图片已划分、已标注)| AI训练适用于目标检测任务
本数据集含9000张高质量标注图像,覆盖机场、医院楼顶、港口等多场景,支持YOLO/Faster R-CNN等模型;已划分train/val/test,单类“Helipad”,具多尺度、多角度、多光照特性,适用于无人机降落、低空导航与遥感检测。
|
10月前
|
传感器 算法 数据可视化
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
615 4
|
4月前
|
人工智能 前端开发 Serverless
如何用 Claude AWS配合阿里云函数计算搭建AI应用
企业核心业务在阿里云,却需调用AWS Bedrock的Claude模型?推荐用阿里云函数计算(FC)构建Serverless代理网关:安全隐藏AK/SK、弹性抗并发、网络更稳定。架构为“用户→API网关→FC→Bedrock”,百毫秒延迟,轻量高效。
|
4月前
|
搜索推荐 开发者
阿里云账号实名认证教程方法(快速实名)2026年最新个人和企业用户实名认证全流程
本教程详解2026年阿里云最新实名认证流程:个人用户可通过支付宝扫码快速完成(5分钟内),企业用户支持法人扫脸、企业银行卡/支付宝等4种方式,最快几分钟通过。认证后可申领上云权益。
1070 1
|
7月前
|
SQL Oracle 关系型数据库
Oracle 数据塑形:行列转换与集合运算
报表要求的数据格式总是千奇百怪?其实用SQL就能让数据轻松“变形”。想把多行内容(比如各科成绩)合并成一行里的多列,可以用经典的CASE WHEN,或者在11g以上版本里用更简洁的PIVOT。反过来,把宽表拆成多行,也有UNION ALL和更方便的UNPIVOT。学会这些,再配合UNION、INTERSECT等集合运算,数据就能随心所欲地展示了。
675 14
|
6月前
|
存储 人工智能 监控
2026年企业如何应用数据中台?从搭建到落地的实践路径
数据中台是企业数字化转型的核心,通过整合数据资源、提升治理能力,实现数据资产化与业务赋能。本文系统梳理其建设路径:从战略规划、数据盘点,到集成治理、服务输出,结合瓴羊Dataphin与Quick Audience等工具,推动营销等场景落地,并展望实时化、智能化、平民化未来趋势,助力企业释放数据价值。
|
7月前
|
数据采集 缓存 网络协议
医疗设备协议对接开发
医疗设备协议对接需实现监护仪、呼吸机等与HIS、EMR等系统间的数据互通,涵盖HL7、DICOM、ASTM等标准及私有协议解析。开发流程包括需求分析、解析开发、数据清洗、网关构建与闭环验证,强调时序性、完整性与安全性。推荐使用Java/Go语言,结合Mirth、Wireshark等工具提升效率。#医疗信息化 #协议对接
|
云安全 人工智能 安全
云安全中心2.0持续演进:防护体系全面化、智能化、轻量化
云安全中心2.0持续演进,防护体系全面化、智能化、轻量化。本次分享由阿里云高级安全产品专家梁雷介绍,涵盖四大方面:云上安全风险趋势与问题、一体化升级方案、客户应用场景及普惠政策。云安全中心从主机工作负载单体防护升级为提供事前、事中、事后的一体化安全运营,新增Serverless形态的云工作负载防护、多云产品检测修复能力、零资源占用的Agentless检测等。同时推出多项免费试用和降价策略,助力用户提升云上安全防护水平。
458 4