js播放mp3,并且读取srt字幕文件,展示字幕

下面是gpt生成的代码,能跑,但是性能gpt是不考虑的,自行斟酌

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>MP3播放器</title>
</head>
<body><h1>MP3播放器</h1><audio id="audioPlayer" controls><source src="a.mp3" type="audio/mpeg">Your browser does not support the audio element.</audio><div id="subtitleContainer"></div><script>// 读取SRT字幕文件function loadSubtitles() {fetch('a.srt').then(response => response.text()).then(data => {const subtitleContainer = document.getElementById('subtitleContainer');subtitleContainer.innerHTML = '';const subtitleLines = data.split('\n\n');subtitleLines.forEach(line => {if(line==="")return;const subtitleParts = line.split('\n');const startTime = subtitleParts[1].split(' --> ')[0];const text = subtitleParts.slice(2).join('<br>');const subtitleElement = document.createElement('span');subtitleElement.innerHTML = text+",";//subtitleElement.style.display = 'none';subtitleContainer.appendChild(subtitleElement);const audioPlayer = document.getElementById('audioPlayer');audioPlayer.addEventListener('timeupdate', () => {const currentTime = audioPlayer.currentTime;if (currentTime >= convertTimeToSeconds(startTime)) {subtitleElement.style.backgroundColor="rgb(255 243 156)";} else {subtitleElement.style.backgroundColor="";}});});});}// 将时间转换为秒function convertTimeToSeconds(time) {const timeParts = time.split(':');const hours = parseInt(timeParts[0]);const minutes = parseInt(timeParts[1]);const seconds = parseFloat(timeParts[2].replace(',', '.'));return hours * 3600 + minutes * 60 + seconds;}// 加载字幕和音频window.addEventListener('load', () => {loadSubtitles();});</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac和VirtualBox Ubuntu共享文件夹

1、VirtualBox中点击设置->共享文件夹 2、设置共享文件夹路径和名称&#xff08;重点来了&#xff1a;共享文件夹名称&#xff09; 3、保存设置后重启虚拟机&#xff0c;执行下面的命令 sudo mkdir /mnt/share sudo mount -t vboxsf share /mnt/share/ 注&#xff1a;shar…

Leetcode-203-移除链表元素-临时变量作用域-c++

题目详见https://leetcode.cn/problems/remove-linked-list-elements/ 题解代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullpt…

你需要知道的笔记本养护的几个小知识

笔记本充电器可以长期不拔吗&#xff1f; 可以&#xff0c;但建议偶尔使用电池激发电池活性并且修正电量计精度&#xff1b; 当充电器接入后&#xff0c;笔记本会优先使用充电器进行供电而不会使用电池供电&#xff0c;同时充电器也会为缺电的电池补充电量。 现在笔记本电脑普遍…

大数据开发中的数据驱动决策:关键问题与实践指南

目录 决策前的准备工作1. 我已经掌握了哪些信息&#xff1f;2. 我们已经做出决定了吗&#xff1f;3. 我们需要哪些额外信息以及何时需要&#xff1f; 决策过程中的关键问题1. 我们需要做这个决定吗&#xff1f;2. 错误地做出这个决定的代价是什么&#xff1f; 决策后的反思1. 我…

分布式系统—Ceph对象存储系统(RGW接口)

一、对象存储概念 对象存储&#xff08;object storage&#xff09;是非结构数据的存储方法&#xff0c;对象存储中每一条数据都作为单独的对象存储&#xff0c;拥有唯一的地址来识别数据对象&#xff0c;通常用于云计算环境中。不同于其他数据存储方法&#xff0c;基于对象的…

web黑马课总结笔记(持续更新)

web学习笔记 jsjs引入方式内部脚本&#xff1a;将js代码定义在html界面中外部脚本&#xff1a;将js代码定义在外部js文件中&#xff0c;然后引入到html页面中 js的三种输出 js js是一门跨平台&#xff0c;面向对象的脚本语言。是用来控制网页行为时代的&#xff0c;它能使网页…

《Python零基础入门》——关于PyCharm使用技巧及python基本概念

从本次文章开始&#xff0c;我们将学习一门新的编程语言——Python。作为最热门的编程语言&#xff0c;Python相对比较清晰、简单。 python主要的编译工具就是pycharm&#xff0c;关于pycharm的安装及python配置环境&#xff0c;大家可自行参考网络上的教程&#xff0c;本文不…

# Redis 入门到精通(一)数据类型(4)

Redis 入门到精通&#xff08;一&#xff09;数据类型&#xff08;4&#xff09; 一、redis 数据类型–sorted_set实现时效性任务管理 1、sorted_set 类型数据操作的注意事项 score 保存的数据存储空间是64位&#xff0c;如果是整数范围是-9007199254740992~9007199254740992…

python的seek()和tell()

seek() seek() 是用来在文件中移动指针位置的方法。它的作用是将文件内部的当前位置设置为指定的位置。 seek(offset, whence) 参数说明 offset: 这是一个整数值&#xff0c;表示相对于起始位置的偏移量。如果是正数&#xff0c;表示向文件末尾方向移动&#xff1b;如果是负…

volatile关键字的作用java

1.内存可见性 当一个变量被声明volatile时,它会保证被修改的值被立刻更新到主内存中,不会优化到寄存器或缓存中 2.禁止指令重排序 针对被volatile修饰的变量的读写相关指令,是不能被重新排序的 代码演示 class Counter{public int flag; } public class Thread3 {public stati…

QT creator与VS2019 QT加载模块方法

QT creator与VS2019加载模块方法 QT creator&#xff0c;pro文件添加 VS2019 QT

酷克数据亮相第13届PostgreSQL中国技术大会,获数据库杰出贡献奖

7 月 12 日&#xff0c;第 13 届 PostgreSQL 中国技术大会在杭州盛大开幕。本次大会以“聚焦云端创新&#xff0c;汇聚智慧共享”为主题&#xff0c;邀请了国内外 PG 领域众多行业大咖、学术精英及技术专家&#xff0c;共同探讨数据库领域的发展趋势、技术创新和实践经验。酷克…

每天一个数据分析题(四百二十六)- 总体方差

为了比较两个总体方差&#xff0c;我们通常检验两个总体的() A. 方差差 B. 方差比 C. 方差乘积 D. 方差和 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#xff0c;SQL&#xff0c;统计学&a…

[Vulnhub] Tr0ll3 aircrack-ng+lynx

信息收集 IP AddressOpening Ports192.168.101.147TCP:22 $ ssh start192.168.101.147 用户:Start startTr0ll3:~$ find / -type f -perm 0777 2>/tmp/1 startTr0ll3:~$ cat /var/log/.dist-manage/wytshadow.cap | nc 192.168.101.128 10035 WIFI握手包 aircrack-ng 破…

mysql快速精通(四)多表查询

主打一个实用 一. 连接查询 交叉连接 交叉连接返回两个表的笛卡尔积&#xff0c;即每个表的每一行与另一个表的每一行组合 语法: SELECT *FROM table1 CROSS JOIN table2;内连接 查询两张表都存在的数据&#xff0c;即排除两张表的未匹配部分 语法: SELECT 字段名 FROM 左表 IN…

记一次 .NET某上位视觉程序 离奇崩溃分析

一&#xff1a;背景 1. 讲故事 前段时间有位朋友找到我&#xff0c;说他们有一个崩溃的dump让我帮忙看下怎么回事&#xff0c;确实有太多的人在网上找各种故障分析最后联系到了我&#xff0c;还好我一直都是免费分析&#xff0c;不收取任何费用&#xff0c;造福社区。 话不多…

JMESPath: 强大的处理JSON数据

文章目录 引言官网链接JMESPath原理概述工作原理 基础使用安装与配置基本查询过滤 高级使用投影管道表达式多选表达式 结论 引言 在处理JSON数据时&#xff0c;我们经常需要查询、过滤和转换数据。JMESPath&#xff08;JSON Matching Expressions Path&#xff09;是一种查询语…

[译] Rust标准库有些特殊,让我们改它

本篇是对 RustConf 2023中的The standard library is special. Let’s change that.这一视频的翻译与整理, 过程中为符合中文惯用表达有适当删改, 版权归原作者所有. 今天我将讨论Rust的标准库,更具体地说,是关于标准库有何特殊之处,以及为什么我们应该改变这一点。首先声明一下…

大模型高效参数微调技术

文章目录 一、Fine-Tuning&#xff1a;微调二、Prompt-Tuning&#xff1a;提示调优2.1 工作原理2.2 PET (Pattern-Exploiting Training)2.3 Prompt-Tuning集成2.4 模板构建方式 三、Prefix Tuning&#xff1a;连续提示模板3.1 提出动机3.2 工作原理 四、P-Tuning V1/V24.1 P-Tu…

MQTT——Mosquitto使用(Linux订阅者+Win发布者)

前提&#xff1a;WSL&#xff08;Ubuntu22&#xff09;作为订阅者&#xff0c;本机Win10作为发布者。 1、Linux安装Mosquitto 命令行安装。 sudo apt-get install mosquitto 以上默认只安装了mosquitto的服务&#xff0c;不带测试客户端工具mosquitto_sub和mosquitto_pub。如…