字幕设置
1. 概述
字幕用于录播文件的播放,显示视频文件声音轨道的文字内容。zwplayer 支持同时呈现两路字幕(双字幕功能),为用户提供更灵活的字幕观看体验。
字幕显示示例
下图展示了 zwplayer 同时呈现双字幕的效果:

字幕控制示例
用户可以通过播放器控制条上的"CC"菜单来开启或关闭任意一路字幕:

2. 添加字幕
要添加字幕支持,需要调用 zwplayer 的 addSubtitle 方法。建议在播放器加载完视频后再加载字幕。
支持的字幕格式
JSON:
zwplayer自定义格式SRT:大多数视频网站采用的格式
VTT:Web 视频字幕标准格式
BCC:Bilibili 字幕格式(JSON格式)
3. JSON 字幕格式说明
示例文件
{
"font_size": 0.4,
"font_color": "#FFFFFF",
"background_alpha": 0.5,
"background_color": "#9C27B0",
"Stroke": "none",
"type": "AIsubtitle",
"lang": "zh",
"version": "v1.4.0.4",
"body": [
{
"from": 7.26,
"to": 8.79,
"sid": 1,
"location": 2,
"content": "进入21世纪"
},
{
"from": 8.79,
"to": 12.68,
"sid": 2,
"location": 2,
"content": "中国成为世界舞台上的重要角色"
},
{
"from": 14.79,
"to": 18.68,
"sid": 3,
"location": 2,
"content": "中国是世界人口最多的国家之一"
}
]
}文件级属性说明
| 属性名 | 说明 | 是否必须 |
|---|---|---|
| font_size | 字体尺寸(相对尺寸),计算方式:将视频缩放为1024×576,32像素字体尺寸为1,实际的字体尺寸根据这个值计算出来的,以便于字幕尺寸在视频播放窗口发生变化时同步变化。 | 可选 |
| font_color | 字体颜色(HTML颜色值) | 可选 |
| background_alpha | 字体背景透明度(1为不透明,0为全透明) | 可选 |
| background_color | 字体背景颜色 | 可选 |
| Stroke | 字体是否勾边 | 可选 |
| type | 字幕类型(实际渲染用不到) | 可选 |
| lang | 字幕语言(如:zh、zh-TW、en) | 可选 |
| version | 制作工具版本(实际渲染用不到) | 可选 |
| body | 字幕具体内容(JS数组) | 必须 |
字幕元素属性(body)说明
每个字幕元素为一个对象,包含在 body 数组中,具有以下属性:
| 属性名 | 说明 | 是否必须 |
|---|---|---|
| from | 字幕开始时间(相对于媒体时间,单位:秒) | 必须 |
| to | 字幕结束时间(相对于媒体时间,单位:秒) | 必须 |
| sid | 字幕元素ID | 可选 |
| location | 字幕呈现位置 | 可选 |
| content | 字幕文本内容 | 必须 |
4. 其他格式说明
SRT 与 VTT 文件是标准的字幕文件格式,zwplayer 也全面支持加载这些文件。关于这些字幕文件的详细格式说明,请参考相关技术文档。
5. 代码示例
以下示例演示如何在 zwplayer 中加载字幕:
<script language="javascript">
window.mainplayer = new ZWPlayer({
url: 'http://example.com/vod/movie.mp4',
playerElm: '#player-holder', // 可以是元素ID或DOM对象
});
// 在时钟事件中延时加载字幕
setTimeout(function() {
if (window.mainplayer) {
// 获取字幕URL(实际应用中可能通过Ajax获取)
var subtitleURL_korean = 'http://example.com/data/movies.en.srt';
// 设置第一字幕
window.mainplayer.addSubtitle(subtitleURL_korean, '1');
// 如果提供双字幕,请使用以下代码(否则删除或注释)
var subtitleURL_japan = 'http://example.com/data/movies.zh.srt';
// 设置第二字幕
window.mainplayer.addSubtitle(subtitleURL_japan, '2');
}
}, 1000);
</script>6. 注意事项
建议在视频加载完成后再加载字幕,以确保最佳用户体验
除
body属性外,JSON格式的其他属性均可省略字幕轨道标识('1'、'2')用于区分双字幕显示位置
目录导航