小麦子 发表于 2024-12-11 13:38:08

canvas可视化波形音频播放器(原创)




介绍一个 canvas 可视化波形音频播放器。一直想找个机会写一个播放器的功能,这次终于可以如愿实现了,前后花了几周的时间,主要是自己本身也有工作,也确实有点懒散,写一下放一下,磕磕绊绊的总算是做了自己满意的样子。想做播放器是很早的想法,但没有找到好看合适的界面设计,就这个界面还是我翻来国外的音乐网站 soundcloud 仿的,不算很一样,用起来也不差多少,觉得里面的评论功能有点厉害,对着界面就搞了一下。说道里面的波形处理,是用的 canvas 画出来的线条,原理其实也很简单,就是获取音频的流文件,处理里面的 pcm 数据,在计算一下得到柱状的高度,做两个反差的效果,具体的可以看代码写法。功能插件支持两种模式,歌单和单曲的模式。歌单模式:就是一个列表,可以轮训播放。单曲模式:就是单首歌曲,可以提交评论操作,歌曲时间滚动到节点显示评论,如果需要评论保存,那就需要对接处理。element: null, // 播放器的元素
autoplay: false, // 是否自动播放
audio: null, // 播放源,可以是对象或者数组,对象的话就是单曲模式,数组歌单模式
playIndex: 0, // 默认的播放索引
barColor: '#666666', // 柱状的颜色
proBarColor: '#fe4f58,#b1060f' 歌单模式:就是一个列表,可以轮训播放。 单曲模式:就是单首歌曲,可以提交评论操作,歌曲时间滚动到节点显示评论,如果需要评论保存,那就需要对接处理。完整版本:
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://www.jq22.com/demo/yAudio202302082235/audio.css">
<style>
    html,
    body {
      background: #fff;
    }

    .yAudio {
      width: 820px;
      margin: 100px auto;
    }

    .toLus {
      display: block;
      position: absolute;
      top: 0;
      left: 0;
    }

    .toLus img {
      display: block;
      width: 40px;
      height: 40px;
    }
   
    .github {
      display: block;
      width: 100%;
      text-align: center;
    }
</style>
</head>

<body>

<div class="yAudio" id="yAudio1"></div>
<div class="yAudio" id="yAudio2"></div>


<script src="https://www.jq22.com/demo/yAudio202302082235/audio.js"></script>
<script>
    fetch('https://api.i-meto.com/meting/api?server=netease&type=playlist&id=697421859').then(async response => {
      const audio = await response.json();
      new YAudio({
      element: document.querySelector('#yAudio1'),
      audio: audio
      })
    });
    fetch('https://www.vvhan.com/usr/themes/Joe/NeteaseCloudMusicApi.php?id=28403111').then(async response => {
      const audio = await response.json();
      new YAudio({
      element: document.querySelector('#yAudio2'),
      audio: audio
      })
    });
</script>
</body>

</html>

页: [1]
查看完整版本: canvas可视化波形音频播放器(原创)