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>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值