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

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

业务场景

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

业务流程

  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

目录
相关文章
|
7月前
|
消息中间件 存储 分布式计算
《Dataphin 数据处理之旅:我的亲身体验与感悟》
《Dataphin 数据处理之旅:我的亲身体验与感悟》
103 1
|
JavaScript 前端开发 安全
开发业务需求有必要引入 TypeScript 吗?
随着前端技术的不断更新和发展,TypeScript作为一种静态类型的JavaScript超集语言,逐渐在业界崭露头角,尤其是在当今快速发展的软件开发环境中,选择适合的开发工具和技术变得至关重要。在项目规模和复杂性的增加的同时,保证代码质量、可读性和可维护性成为开发团队的重要任务。这样的背景下,引入TypeScript作为一种开发工具来弥补JavaScript的某些弱点,已经成为许多开发团队的选择。那么TypeScript是否值得在业务中引入?它是否会取代JavaScript?那么本文就来聊聊在业务开发过程中是否有必要引入TypeScript,并讨论一下对于现代前端框架发展的看法和期待。
265 0
开发业务需求有必要引入 TypeScript 吗?
|
8月前
|
缓存 自然语言处理 搜索推荐
深入优化基于DeepSeek的智能客服系统:从基础到高级
本文在上一篇构建的DeepSeek智能客服系统基础上,深入探讨了性能优化、用户体验提升和高级功能集成的方法。通过缓存机制、异步处理优化性能;利用情感分析、个性化回答提升用户体验;引入语音识别、知识图谱等高级功能增强智能化水平。结合具体案例与代码示例,帮助开发者打造更高效、智能的客服系统。
|
机器学习/深度学习 编解码 自然语言处理
视频字幕生成案例
8月更文挑战第3天
702 0
|
机器学习/深度学习 自然语言处理 算法
视频字幕自动生成
8月更文挑战第12天
668 2
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能电影制作与剪辑
使用Python实现深度学习模型:智能电影制作与剪辑
445 5
|
人工智能 算法
从RLHF到DPO再到TDPO,大模型对齐算法已经是token-level
【7月更文挑战第1天】在AI领域的语言模型对齐研究中,新提出的TDPO算法实现了Token-level的直接优化。不同于以往在答案级别评估的方法,TDPO利用前向KL散度和Bradley-Terry模型,直接在生成过程的Token层面上调整对齐,提高微调精度和多样性。实验显示,TDPO优于DPO和RLHF,在某些任务上表现出色,但也面临计算资源需求高、处理复杂任务时局限性等问题,需要进一步验证和改进。[论文链接](https://arxiv.org/abs/2404.11999)
434 8
|
定位技术 Python
Anaconda环境配置Python绘图库Matplotlib的方法
Anaconda环境配置Python绘图库Matplotlib的方法
398 1
|
缓存 JavaScript 前端开发
解决阿里oss远程图片html2canvas生成海报时跨域问题(附代码)
解决阿里oss远程图片html2canvas生成海报时跨域问题(附代码)
2120 0
解决阿里oss远程图片html2canvas生成海报时跨域问题(附代码)
|
前端开发 应用服务中间件 nginx
(最简单详细)关于nginx配置解决页面刷新以后404 Not Found和403 Forbidden
(最简单详细)关于nginx配置解决页面刷新以后404 Not Found和403 Forbidden
3926 0
(最简单详细)关于nginx配置解决页面刷新以后404 Not Found和403 Forbidden