您的位置:首页 > 汽车 > 新车 > 微商怎么开店步骤_自我介绍html网页模板_关键词优化是怎么弄的_百度怎么做广告推广

微商怎么开店步骤_自我介绍html网页模板_关键词优化是怎么弄的_百度怎么做广告推广

2025/1/9 12:18:46 来源:https://blog.csdn.net/m0_53912016/article/details/145013819  浏览:    关键词:微商怎么开店步骤_自我介绍html网页模板_关键词优化是怎么弄的_百度怎么做广告推广
微商怎么开店步骤_自我介绍html网页模板_关键词优化是怎么弄的_百度怎么做广告推广
播放视频带同步音波功能

Wavesurfer.js

官网地址

wavesurfer.js是一个用于在Web浏览器中实时可视化音频波形的JavaScript库‌
支持多种音频文件格式,包括MP3WAVAAC和Ogg等,
并且可以通过调用相应的加载方法加载任何支持的音频文件‌
支持播放、暂停、跳转、缩放、选择和剪切等操作
允许用户自定义波形的外观和样式,包括颜色、阴影效果、进度条和标记
npm install wavesurfer.js --save

请添加图片描述

<template><div><div ref="waveform"></div><video ref="video"controls playsinline style="width: 100%; max-width: 600px; margin: 0 auto; display: block;"><source :src="audioSrc" type="video/mp4">Your browser does not support the video tag.</video></div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, watch } from 'vue';
import WaveSurfer from 'wavesurfer.js';
// Data
const waveform = ref(null);
const video = ref(null);
const audioSrc = new URL('../src/audio/11.mp4', import.meta.url).href;
let wavesurfer = null;
// Methods
const initWaveform = () => {wavesurfer = WaveSurfer.create({height:28, // 设置波形的高度container: waveform.value,waveColor: 'rgb(200, 0, 200)',progressColor: 'rgb(100, 0, 100)',cursorColor: 'black',backend: 'MediaElement', // 使用 MediaElement 后端来支持视频元素mediaControls: true, // 如果您希望 WaveSurfer 控制媒体控件,请设为 truemedia: video.value, // 直接传递视频元素});// 监听 ready 事件确保 WaveSurfer 已经准备好wavesurfer.on('ready', () => {console.log('WaveSurfer is ready');});// 设置同步逻辑const syncVideoAndWaveSurfer = () => {video.value.addEventListener('play', () => wavesurfer.play());video.value.addEventListener('pause', () => wavesurfer.pause());video.value.addEventListener('seeked', () => wavesurfer.seekTo(video.value.currentTime / video.value.duration));wavesurfer.on('seek', (pos) => {video.value.currentTime = pos * video.value.duration;});wavesurfer.on('finish', () => {video.value.pause();video.value.currentTime = 0; // 可选:回到视频开始位置});};// 确保视频已经加载元数据后再进行同步watch(() => video.value.readyState, (newVal) => {if (newVal >= 2 && wavesurfer.isReady) {syncVideoAndWaveSurfer();}}, { immediate: true });wavesurfer.load(audioSrc); // 加载音频文件
};// Lifecycle hooks
onMounted(() => {initWaveform();
});onBeforeUnmount(() => {if (wavesurfer) {wavesurfer.destroy(); // 清理 WaveSurfer 实例}// 移除所有事件监听器以防止内存泄漏if (video.value) {video.value.removeEventListener('play', wavesurfer.play.bind(wavesurfer));video.value.removeEventListener('pause', wavesurfer.pause.bind(wavesurfer));video.value.removeEventListener('seeked', wavesurfer.seekTo.bind(wavesurfer));}
});
</script><style scoped>
/* 在这里添加样式 */
</style>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com