{"id":965,"date":"2024-05-08T15:39:13","date_gmt":"2024-05-08T07:39:13","guid":{"rendered":"https:\/\/gjweb.top\/?p=965"},"modified":"2024-05-08T16:05:54","modified_gmt":"2024-05-08T08:05:54","slug":"%e9%9f%b3%e9%a2%91%e5%8f%af%e8%a7%86%e5%8c%96-audio-visualization-pro","status":"publish","type":"post","link":"https:\/\/gjweb.top\/?p=965","title":{"rendered":"\u97f3\u9891\u53ef\u89c6\u5316 audio-visualization-pro"},"content":{"rendered":"\n<p><img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/npm-v_9.51-a\">  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/vue-v_2.0-blue\">  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/vue-v_3.0-blue\">  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/react-v_18.0-red\">  <img decoding=\"async\" src=\"https:\/\/img.shields.io\/badge\/audio-visualization_pro-a\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7b80\u4ecb<\/strong><\/h2>\n\n\n\n<p>`audio-visualization-pro` \u662f\u9488\u5bf9 `audio-visualization`\u5f00\u6e90\u7684\u5f3a\u5316\u7248\u672c,\u901a\u8fc7 `WEB-AUDIO-API` \u5b9e\u73b0\u7684\u5b9e\u73b0\u7684\u97f3\u4e50\u53ef\u89c6\u5316\u7684\u5e93\uff0c\u901a\u8fc7\u672c\u5e93\u4f60\u53ef\u4ee5\u83b7\u53d6\u5230`\u5f53\u524d\u97f3\u9891`\u7684\u97f3\u9891\u9891\u8c31\uff0c\u5e76\u5728\u539f\u4f5c\u8005\u57fa\u7840\u4e0a\u5f3a\u5316\u4e86\u521b\u5efa\u3001\u6682\u505c\u3001\u9500\u6bc1\u7b49\u5b9e\u4f8b\u65b9\u6cd5\u5e76\u63d0\u4f9b\u76f8\u5e94\u7684 API \u65b9\u6cd5<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u94fe\u63a5<\/strong><\/h2>\n\n\n\n<p><a href=\"https:\/\/github.com\/gongjianOnline\/audio-visualization\">github<\/a> <a href=\"https:\/\/www.npmjs.com\/package\/audio-visualization-pro\">npm<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u65b9\u6cd5<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u65b9\u6cd5<\/th><th>\u6ce8\u91ca<\/th><\/tr><\/thead><tbody><tr><td>AudioVisualizationPro(url:string,loop:booler)<\/td><td>\u5b9e\u4f8b\u5316API<\/td><\/tr><tr><td>setFftSzie(int)<\/td><td>\u97f3\u9891\u632f\u5e45\u5e38\u752832\u300164\u3001128\u3001512\uff08\u7b49\u500d\u6570\u5b9a\u4e49\uff09<\/td><\/tr><tr><td>play(({frequency, currentTime, audiostate})=&gt;{})<\/td><td>\u64ad\u653e\uff0c\u5305\u542b\u56de\u5230\u51fd\u6570 frequency \u97f3\u9891\u632f\u5e45\u6570\u7ec4 Array[number]\u3001currentTime\u64ad\u653e\u7684\u8fdb\u5ea6\u3001audiostate\u64ad\u653e\u72b6\u6001 1\u64ad\u653e\u30010\u505c\u6b62<\/td><\/tr><tr><td>suspend()<\/td><td>\u6682\u505c\u64ad\u653e<\/td><\/tr><tr><td>destroy()<\/td><td>\u9500\u6bc1\u5f53\u524d\u5b9e\u4f8b\uff0c\u53ef\u91cd\u65b0\u521b\u5efa\u65b0\u7684\u97f3\u4e50\u53ef\u89c6\u5316\u5b9e\u4f8b<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u6548\u679c<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/gjweb.top\/wp-content\/uploads\/2024\/05\/1715153431922-00_00_00-00_00_30.gif'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"336\" data-original=\"https:\/\/gjweb.top\/wp-content\/uploads\/2024\/05\/1715153431922-00_00_00-00_00_30.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-966\"\/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u793a\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">vue2.0<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div id=\"app\"&gt;\n    &lt;div class=\"titleContainer\"&gt;\u97f3\u9891\u53ef\u89c6\u5316&lt;\/div&gt;\n    &lt;div class=\"echartsContainer\" id=\"echartsContainer\"&gt;&lt;\/div&gt;\n    &lt;!-- \u63a7\u5236\u5668 --&gt;\n    &lt;div class=\"controllerContainer\"&gt;\n      &lt;div @click=\"audioPlay(1)\"&gt;\u64ad\u653e&lt;\/div&gt;\n      &lt;div @click=\"audioPlay(0)\"&gt;\u6682\u505c&lt;\/div&gt;\n      &lt;div @click=\"destruction()\"&gt;\u9500\u6bc1\u5b9e\u4f8b\u91cd\u65b0\u521b\u5efa&lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport \"audio-visualization-pro\"\nexport default {\n  name: 'App',\n  components: {\n\n  },\n  data(){\n    return {\n      AVP:null\n    }\n  },\n  mounted(){\n    this.createVisualization();\n  },\n  methods:{\n    \/**\u521d\u59cb\u5316\u5b9e\u4f8b *\/\n    createVisualization(){\n      this.AVP = new window.AudioVisualizationPro({\n        url:require(\".\/assets\/audio.mp3\"),\n        loop:false\n      })\n    },\n    \/**\u64ad\u653e&amp;\u6682\u505c *\/\n    audioPlay(type){\n      if(type){\n        this.AVP.play(({frequency})=&gt;{\n          this.createEcharts(&#91;...Array.from(frequency).reverse(), ...frequency])\n        })\n      }else{\n        this.AVP.suspend()\n      }\n    },\n    \/*\u9500\u6bc1\u5b9e\u4f8b*\/\n    destruction(){\n      if(this.AVP){\n        this.AVP.destroy();\n        this.AVP = null;\n        this.createVisualization()\n      }\n    },\n    \/*\u56fe\u8868*\/\n    createEcharts(data){}\n  }\n}\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">vue3.0<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div id=\"app\"&gt;\n    &lt;div class=\"titleContainer\"&gt;\u97f3\u9891\u53ef\u89c6\u5316&lt;\/div&gt;\n    &lt;div class=\"echartsContainer\" id=\"echartsContainer\"&gt;&lt;\/div&gt;\n    &lt;!-- \u63a7\u5236\u5668 --&gt;\n    &lt;div class=\"controllerContainer\"&gt;\n      &lt;div @click=\"audioPlay(1)\"&gt;\u64ad\u653e&lt;\/div&gt;\n      &lt;div @click=\"audioPlay(0)\"&gt;\u6682\u505c&lt;\/div&gt;\n      &lt;div @click=\"destruction()\"&gt;\u9500\u6bc1\u5b9e\u4f8b\u91cd\u65b0\u521b\u5efa&lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n&lt;script setup lang=\"ts\"&gt;\nimport \"audio-visualization-pro\"\nimport { onMounted } from \"vue\";\nimport audioAssets from \".\/assets\/audio.mp3\";\n\n  onMounted(()=&gt;{\n    createVisualization()\n  })\n\n  let AVP:any = null;\n  \/**\u521d\u59cb\u5316\u5b9e\u4f8b *\/\n  const createVisualization = ()=&gt;{\n    AVP = new (window as any).AudioVisualizationPro({\n      url:audioAssets,\n      loop:false\n    })\n  };\n  \/**\u64ad\u653e&amp;\u6682\u505c *\/\n  const audioPlay = (type:number)=&gt;{\n    if(type){\n      \/\/ currentTime . audiostate\n      AVP.play(({frequency}:any)=&gt;{\n        createEcharts(&#91;...Array.from(frequency).reverse(), ...frequency])\n      })\n    }else{\n      AVP.suspend()\n    }\n  };\n  \/*\u9500\u6bc1\u5b9e\u4f8b*\/\n  const destruction = ()=&gt;{\n    if(AVP){\n      AVP.destroy();\n      AVP = null;\n      createVisualization()\n    }\n  };\n  \/**\u5b9e\u4f8b\u5316Echarts *\/\n  const createEcharts = (data:any)=&gt;{}\n\n\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">react<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import '.\/App.css'\nimport \"audio-visualization-pro\"\nimport audioAssets from \".\/assets\/audio.mp3\"\n\nconst App:React.FC&lt;any&gt; = ()=&gt;{\n\n  useEffect(()=&gt;{\n    createVisualization()\n  })\n\n  let AVP:any = null;\n  \/**\u521d\u59cb\u5316\u5b9e\u4f8b *\/\n  const createVisualization = ()=&gt;{\n    AVP = new (window as any).AudioVisualizationPro({\n      url:audioAssets,\n      loop:false\n    })\n  };\n  \/**\u64ad\u653e&amp;\u6682\u505c *\/\n  const audioPlay = (type:number)=&gt;{\n    if(type){\n      \/\/ currentTime . audiostate\n      AVP.play(({frequency}:any)=&gt;{\n        createEcharts(&#91;...Array.from(frequency).reverse(), ...frequency])\n      })\n    }else{\n      AVP.suspend()\n    }\n  };\n  \/*\u9500\u6bc1\u5b9e\u4f8b*\/\n  const destruction = ()=&gt;{\n    if(AVP){\n      AVP.destroy();\n      AVP = null;\n      createVisualization()\n    }\n  };\n  \/**\u5b9e\u4f8b\u5316Echarts *\/\n  const createEcharts = (data:any)=&gt;{};\n\n\n  return (\n    &lt;div className=\"app\"&gt;\n      &lt;div className=\"titleContainer\"&gt;\u97f3\u9891\u53ef\u89c6\u5316&lt;\/div&gt;\n      &lt;div className=\"echartsContainer\" id=\"echartsContainer\"&gt;&lt;\/div&gt;\n      &lt;div className=\"controllerContainer\"&gt;\n        &lt;div onClick={()=&gt;audioPlay(1)}&gt;\u64ad\u653e&lt;\/div&gt;\n        &lt;div onClick={()=&gt;audioPlay(0)}&gt;\u6682\u505c&lt;\/div&gt;\n        &lt;div onClick={()=&gt;destruction()}&gt;\u9500\u6bc1\u5b9e\u4f8b\u91cd\u65b0\u521b\u5efa&lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default App<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u4ecb `audio-visualization-pro` \u662f\u9488\u5bf9 `audio-visualization`\u5f00 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-965","post","type-post","status-publish","format-standard","hentry","category-38"],"_links":{"self":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts\/965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=965"}],"version-history":[{"count":3,"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts\/965\/revisions"}],"predecessor-version":[{"id":972,"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts\/965\/revisions\/972"}],"wp:attachment":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}