文档中心>云点播>实践教程>媒体处理>如何为视频添加字幕

如何为视频添加字幕

最近更新时间:2024-11-14 10:13:12

我的收藏
云点播支持为 转自适应码流 输出的 HLS 视频添加(或删除)多种语言的标准字幕文件。播放时,可以切换选择不同语言的字幕进行显示,以提升观看体验。
使用流程包括两个步骤:对媒体文件添加字幕对媒体文件关联字幕
为便于描述,本文假设如下具体场景:对 FileId(1397757888586312345)的 转自适应码流模板 ID(10) 输出的文件添加中文(zh)和英文(en)字幕,使得播放该文件时,可以选择添加的中文或英文字幕进行显示。

一、对媒体文件添加字幕

此步骤实现将字幕添加到 FileId(1397757888586312345)的媒资中,并得到字幕 ID。下一步将使用该字幕 ID 进行字幕关联。
云点播提供两种方式为媒体文件添加字幕:上传字幕和智能识别自动生成字幕。

上传字幕

上传已有的字幕文件,上传成功后自动添加字幕信息到媒资。支持两种方式上传:控制台上传、服务端 API 上传。

控制台上传

1. 登录 云点播控制台,进入目标应用的音视频管理页面,对 FileId(1397757888586312345)媒资单击管理。



2. 单击字幕信息 > 添加字幕。



3. 上传所需要的字幕文件,并编辑好语言类型字幕流名称(用于播放器展示),单击确定。



4. 得到中文、英文字幕 ID 分别为 DCx7UT 和 FxxUKR。




服务端 API 上传

1. 调用服务端 API 修改媒体文件属性,输入参数 AddSubtitles 指定需要上传的字幕:
"AddSubtitles": [
{
"Name": "demo_zh.vtt",
"Language": "zh",
"Format": "vtt",
"Content": "V0VCVlRUCgowMDowMDowMC4wMDAgLS0+IDAwOjAwOjAyLjA0MArkvaDlpb3lkJfvvJ8KCjAwOjAwOjAyLjEwMCAtLT4gMDA6MDA6MDQuOTUwCuaIkeW+iOWlve+8jOiwouiwou+8jOS9oOWRou+8nwoKMDA6MDA6MDQuOTgwIC0tPiAwMDowMDowNi45MDAK5oiR5Lmf5b6I5aW944CCCg=="
},
{
"Name": "demo_en.vtt",
"Language": "en",
"Format": "vtt",
"Content": "V0VCVlRUCgowMDowMDowMC4wMDAgLS0+IDAwOjAwOjAyLjA0MApIb3cgYXJlIHlvdT8KCjAwOjAwOjAyLjEwMCAtLT4gMDA6MDA6MDQuOTUwCkZpbmUsIHRoYW5rIHlvdSwgYW5kIHlvdT8KCjAwOjAwOjA0Ljk4MCAtLT4gMDA6MDA6MDYuOTAwCkknbSBmaW5lIHRvby4K"
}
]
2. 接口输出示例(省略了其他字段),从中得到中文、英文字幕 ID 分别为 DCx7UT 和 FxxUKR。
{
"Response": {
"AddedSubtitleSet": [
{
"Id": "DCx7UT",
"Name": "demo_zh",
"Language": "en",
"Format": "vtt",
"Url": "http://123.vod2.myqcloud.com/vodgzp123/1397757888586312345/subtitles/DCx7UT.vtt"
},
{
"Id": "FxxUKR",
"Name": "demo_en",
"Language": "en",
"Format": "vtt",
"Url": "http://123.vod2.myqcloud.com/vodgzp123/1397757888586312345/subtitles/FxxUKR.vtt"
}
],
"RequestId": "90b40581-bf44-4455-a238-c8fe614c20ca"
}
}

智能识别自动生成字幕

通过 音视频内容识别,自动生成字幕并添加字幕信息到媒资。使用流程包括:准备 音视频内容识别模板任务发起结果获取,要点如下:

1. 准备音视频内容识别模板

支持两种方式创建模板:控制台创建模板及服务端 API 创建模板。
1.1. 控制台创建模板
1.1.1. 登录 云点播控制台,进入目标应用后,单击媒体处理设置 > 模板设置 > 智能识别模板,单击创建智能识别模板。



1.1.2. 支持选择“语音全文识别”输出源语言字幕文件,或选择“语音翻译”输出目标翻译语言的字幕文件。以下截图场景为将源视频语音内容识别并翻译为目标语言字幕文件。



1.1.3. 创建后,在模板列表可以看到新建的模板 ID 为 102270。



1.2. 服务端 API 创建模板
1.2.1. 调用服务端 API 创建音视频内容识别模板,输入参数 AsrTranslateConfigure 指定语音翻译任务参数:
"AsrTranslateConfigure": {
"Switch": "ON",
"SrcLanguage": "zh",
"DstLanguage": "en",
"SubtitleFormats": ["vtt"]
}
注意,如果不需要翻译字幕,可以使用语音全文识别(AsrFullTextConfigure),指定生成视频源语言的字幕:
"AsrFullTextConfigure": {
"Switch": "ON",
"SrcLanguage": "zh",
"SubtitleFormats": ["vtt"]
}
1.2.2. 根据本文场景,我们指定语音翻译(AsrTranslateConfigure),接口输出示例(省略了其他字段),从中得到模板 ID(10089)。
{
"Response": {
"Definition": 10089,
"RequestId": "12ae8d8e-dce3-4151-9d4b-5594145287e1"
}
}

2. 任务发起

支持多种方式发起智能识别任务:
调用服务端 API
控制台发起任务流
上传时指定任务流
服务端上传
客户端上传
控制台上传
以上方式参考开发指南 任务发起。此外,您还可以直接通过控制台发起智能识别任务,参考如下:
2.1. 登录 云点播控制台,进入目标应用的音视频管理页面,选中要智能识别生成字幕的 FileId,单击智能识别。



2.2. 单击选择模板。



2.3. 选中要使用的识别模板然后单击确定。



页面会提示创建任务成功:



2.4. 在任务中心页面可以看到智能识别任务的任务 ID及任务状态。



当任务状态为已完成,则智能识别字幕已经成功,并且生成的字幕信息已经自动添加到媒资。

3. 结果获取

使用上一步『任务发起』得到的任务 ID,结合开发指南 结果获取,可以得到智能识别结果,位于 ProcedureTask 结构 里的 AiRecognitionResultSet(类型为AiRecognitionResult 数组):
Type 为 AsrFullTextRecognition 时,表示语音全文翻译结果保存在 AsrFullTextTask
Type 为 AsrTranslateRecognition 时,表示语音翻译结果保存在 AsrTranslateTask
AsrTranslateTask 示例:
{
"Status": "SUCCESS",
"ErrCode": 0,
"ErrCodeExt": "",
"Message": "SUCCESS",
"Progress": 100,
"BeginProcessTime": "2024-10-16T12:21:04Z",
"FinishTime": "2024-10-16T12:21:47Z",
"Input": {
"Definition": 102270
},
"Output": {
"SegmentSet": [
{
"Text": "您好吗?",
"Translation": "How are you?",
"StartTimeOffset": 0,
"EndTimeOffset": 2.04,
"Confidence": 100
},
{
"Text": "我很好,谢谢,您呢?",
"Translation": "Fine, thank you, and you?",
"StartTimeOffset": 2.1,
"EndTimeOffset": 4.95,
"Confidence": 100
},
{
"Text": "我也很好。",
"Translation": "I'm fine too.",
"StartTimeOffset": 4.98,
"EndTimeOffset": 6.9,
"Confidence": 100
}
],
"SegmentSetFileUrl": "http://251000800.vod2.myqcloud.com/6c0f30dfvodgzp251000800/397dbd234424135347904691234/75a7a19e-abaa-4af4-affb-04e76b3bc9bd.txt",
"SegmentSetFileUrlExpireTime": "2024-10-19T12:21:44.525Z",
"SubtitleSet": [
{
"Id": "DCx7UT",
"Name": "zh",
"Language": "zh",
"Format": "vtt",
"Url": "https://123.vod-qcloud.com/vodgzp123/1397757888586312345/subtitles/DCx7UT.vtt"
},
{
"Id": "FxxUKR",
"Name": "en",
"Language": "en",
"Format": "vtt",
"Url": "https://123.vod-qcloud.com/vodgzp123/1397757888586312345/subtitles/FxxUKR.vtt"
}
]
}
}
上面示例可以看到生成的中英文字幕 ID 分别为 DCx7UT 和 FxxUKR。
任务成功时,生成的字幕信息已经自动添加到媒资。

二、对媒体文件关联字幕

支持两种方式对媒体文件关联字幕:控制台关联字幕和服务端 API 关联字幕。前者只支持对已经生成的转自适应码流输出文件关联字幕,后者同时支持对存量和增量文件关联字幕。

控制台关联字幕

1. 登录 云点播控制台,进入目标应用的音视频管理页面。对 FileId(1397757888586312345)媒资单击管理 > 字幕信息关联自适应码流下方的列表展示了已经生成转自适应码流的模板,选择需要关联的模板输出,单击操作列的编辑,按如下图示操作:






2. 单击确定后,页面右上方弹出操作成功提示。即表示关联字幕成功。



此外,转自适应码流列表里相应模板对应的关联状态变为已关联:




服务端 API 关联字幕

包括对存量文件和增量文件关联字幕。

1. 对存量文件关联字幕

对已经生成的转自适应码流输出文件关联字幕,请调用服务端 API 关联媒体字幕,输入参数示例如下:
{
"Action": "AttachMediaSubtitles",
"Version": "2018-07-17",
"FileId": "1397757888586312345",
"Operation": "Attach",
"AdaptiveDynamicStreamingDefinition": 10,
"SubtitleIds": ["DCx7UT", "FxxUKR"]
}

2. 对增量文件关联字幕

发起 转自适应码流 任务时,在转自适应码流任务输入参数里指定字幕 ID 列表:MediaProcessTask -> AdaptiveDynamicStreamingTaskSet -> SubtitleSet
输入参数 MediaProcessTask 示例如下:
{
"AdaptiveDynamicStreamingTaskSet": [
{
"Definition": 10,
"SubtitleSet": ["DCx7UT", "FxxUKR"]
}
]
}
任务完成时,转自适应码流的输出文件即关联了字幕。

三、播放效果

关联字幕成功后,播放视频时可选择不同语言的字幕展示,参考效果如下图: