HTML5 <track> 给视音频添加字幕

灵感来源:https://www.zhangxinxu.com/wordpress/2018/03/html5-video-webvtt-subtitle/

HTML5 可以用 <track> 标签 给 <video><audio> 添加字幕,字幕格式有 WebVTT(.vtt),TTML(.xml),WebVTT语法简单,推荐使用

<video 
	controls
    src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/friday.mp4"
>
    <track
    	 default
         kind="captions"
         srclang="en"
         src="https://interactive-examples.mdn.mozilla.net/media/examples/friday.vtt"
     />
    对不起,您的浏览器不支持嵌入式视频。
</video>

在线预览

.vtt文件本质是个文本,下面是个简单的例子,WebVTT的书写规则可以参考MDN

WEBVTT

00:01.000 --> 00:04.000
- 切勿饮用液氮。

00:05.000 --> 00:09.000
- 它将穿透你的胃。
- 你可能会死。

track标签

  • default: 是否默认使用该字幕,每个媒体可以有多条字幕(track),但只能有一个配置default
  • kind: 定义字幕的适用场景
    • subtitles,默认
      • 提供翻译,英文电影里的非英文对话或文字
      • 附加背景信息,星战开头的文字或某个场景的时间、地点
    • captions
      • 隐藏式字幕,提供音频的转录或翻译
      • 重要的非言语信息,BGM或恐怖的音效
      • 适用听力障碍或静音场景,用文字描述声音
    • descriptions
      • 视频简介
      • 适用视力障碍或视频不可见场景,视频后台播放,口述剧情?
    • chapters
      • 章节标题用于用户浏览媒体资源时
    • metadata
      • 脚本使用的track。用户不可见
  • label: 字幕文件的描述,e.g. 中文字幕、英文字幕、日语字幕,选择字幕时显示
  • srclang: 字幕的语言,e.g. zh、en,subtitles时必须
    在这里插入图片描述

修改字幕的样式

可以用::cue伪元素、<b> <u> <i>等标签设置字幕的样式,位置等,IE下不支持。
解决 Unsafe attempt to load URL 后再用谷歌试试

工具

调试过程中的错误

  • Unsafe attempt to load URL
    好像要在服务器上运行才可以,IE可以本地调试
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
用python帮我把下面标签中的有效数据提取出来<annotation> <folder>converted/CMS/2D目标检测/filter</folder> <filename>converted/CMS/2D目标检测/filter_empty_target_img_after_hash2/0/20230401180910649_61.jpg</filename> <source> <database>Unknown</database> <annotation>Unknown</annotation> <image>Unknown</image> </source> <size> <width>1920</width> <height>1536</height> <depth></depth> </size> <segmented>0</segmented> <object> <name>二轮车</name> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>626.38</xmin> <ymin>808.12</ymin> <xmax>650.03</xmax> <ymax>852.04</ymax> </bndbox> <attributes> <attribute> <name>rotation</name> <value>0.0</value> </attribute> <attribute> <name>track_id</name> <value>6</value> </attribute> <attribute> <name>keyframe</name> <value>True</value> </attribute> </attributes> </object> <object> <name>行人</name> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>1612.74</xmin> <ymin>831.51</ymin> <xmax>1627.34</xmax> <ymax>873.8</ymax> </bndbox> <attributes> <attribute> <name>rotation</name> <value>0.0</value> </attribute> <attribute> <name>track_id</name> <value>8</value> </attribute> <attribute> <name>keyframe</name> <value>True</value> </attribute> </attributes> </object> <object> <name>行人</name> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>1469.0</xmin> <ymin>832.96</ymin> <xmax>1489.43</xmax> <ymax>865.8</ymax> </bndbox> <attributes> <attribute> <name>rotation</name> <value>0.0</value> </attribute> <attribute> <name>track_id</name> <value>9</value> </attribute> <attribute> <name>keyframe</name> <value>True</value> </attribute> </attributes> </object> </annotation>
最新发布
07-20
你可以使用Python中的xml.etree.ElementTree库来解析XML数据并提取标签中的有效数据。以下是一个示例代码,演示如何提取出有效数据: ```python import xml.etree.ElementTree as ET # 定义XML字符串 xml_string = ''' <annotation> <folder>converted/CMS/2D目标检测/filter</folder> <filename>converted/CMS/2D目标检测/filter_empty_target_img_after_hash2/0/20230401180910649_61.jpg</filename> <source> <database>Unknown</database> <annotation>Unknown</annotation> <image>Unknown</image> </source> <size> <width>1920</width> <height>1536</height> <depth></depth> </size> <segmented>0</segmented> <object> <name>二轮车</name> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>626.38</xmin> <ymin>808.12</ymin> <xmax>650.03</xmax> <ymax>852.04</ymax> </bndbox> <attributes> <attribute> <name>rotation</name> <value>0.0</value> </attribute> <attribute> <name>track_id</name> <value>6</value> </attribute> <attribute> <name>keyframe</name> <value>True</value> </attribute> </attributes> </object> <object> <name>行人</name> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>1612.74</xmin> <ymin>831.51</ymin> <xmax>1627.34</xmax> <ymax>873.8</ymax> </bndbox> <attributes> <attribute> <name>rotation</name> <value>0.0</value> </attribute> <attribute> <name>track_id</name> <value>8</value> </attribute> <attribute> <name>keyframe</name> <value>True</value> </attribute> </attributes> </object> <object> <name>行人</name> <truncated>0</truncated> <occluded>0</occluded> <difficult>0</difficult> <bndbox> <xmin>1469.0</xmin> <ymin>832.96</ymin> <xmax>1489.43</xmax> <ymax>865.8</ymax> </bndbox> <attributes> <attribute> <name>rotation</name> <value>0.0</value> </attribute> <attribute> <name>track_id</name> <value>9</value> </attribute> <attribute> <name>keyframe</name> <value>True</value> </attribute> </attributes> </object> </annotation> ''' # 解析XML数据 root = ET.fromstring(xml_string) # 提取有效数据 folder = root.find('folder').text filename = root.find('filename').text width = int(root.find('size/width').text) height = int(root.find('size/height').text) objects = [] for obj in root.findall('object'): name = obj.find('name').text xmin = float(obj.find('bndbox/xmin').text) ymin = float(obj.find('bndbox/ymin').text) xmax = float(obj.find('bndbox/xmax').text) ymax = float(obj.find('bndbox/ymax').text) objects.append({ 'name': name, 'xmin': xmin, 'ymin': ymin, 'xmax': xmax, 'ymax': ymax }) # 打印提取的有效数据 print("Folder:", folder) print("Filename:", filename) print("Width:", width) print("Height:", height) print("Objects:") for obj in objects: print(obj) ``` 运行这段代码,它将解析XML字符串并提取出标签中的有效数据。你可以根据需要对提取出的数据进行进一步处理或存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值