日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Html5音乐可视化之音乐的获取和播放

發布時間:2024/6/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Html5音乐可视化之音乐的获取和播放 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

---恢復內容開始---

Html5音樂可視化之音樂的獲取和播放

? ? ?最近沉迷與數據可視化無法自拔,但是自己的水平實在不夠,所以先從一些小Gimmicks開始吧!

? ? ?下面來一張應用核心結構圖感受以下:前端(瀏覽器)從服務器上獲取音頻數據,獲取數據之后調用一個WebAudio,WebAudio一方面要播放音頻數據,一方面要分析音頻數據,并且將分析的音頻數據傳遞給canvans,canvans拿到數據之后就將它可視化。

? ? ?

看著這些個步驟是不是覺得很簡單,然而事實并不是這樣的,接下來就跟著我一起去實現這個小項目吧!

首先,我們要把大方向把握住,要明白整個項目實現的流程:

1.音頻獲取以及播放:前端界面,node服務端構建,webaudio相關api音頻數據獲取并播放;

2.音頻可視化:webaudio相關api分析音頻數據,canvans根據將其可視化;

3.應用優化(代碼優化,效果優化,界面響應式優化);

接下來就是實操啦!

一.構建應用前后端:(我是在windows平臺上構建的)

1.先安裝了git base,然后從官網下載了Node.js的Windows Installer,安裝完成后,想驗證是否nodejs安裝成功,便通過git base 的窗口輸入:node -v,但是卻返回:sh.exe": node :command not found。

? ? ? 去網上搜索了一番,說這種問題一般就是環境變量的問題導致的,然后選擇『計算機』-『屬性』-『高級系統設置』-『環境變量』,先查看了『系統變量』部分,發現安裝后確實在系統變量的Path后追加了我的安裝路徑,即:C:\Program Files\nodejs;然后,我打開『用戶環境變量』部分查看了下Path的值,發現在最后系統自動加入了C:\Users\s94983\AppData\Roaming\npm,發現環境變量都已經默認設置了,但是為什么上面的輸入不能反饋版本信息呢?

? ? ? 通過查找,我嘗試在『用戶環境變量』部分的Path下再追加C:\Program Files\nodejs,然后關閉掉git base,重新打開后再次輸入node -v,這次終于能成功反饋版本信息了,問題解決!

綜上需要說明一點,修改path后,需要重新打開git base,如果你是用dos窗口輸入命令(node -v)也是一樣,如果不關閉,重新打開,還是會返回sh.exe": node :command not found。?

2.但是可能還是會存在問題:npm命令不能在git bash中使用

Bingo@DESKTOP-19C7BJT MINGW64 ~

$ npm -v

bash: npm: command not found

上網查詢得知安裝完nodejs之后配置windows環境變量只能保證在命令行工具中可以使用npm,如果想在git bash中使用需要再安裝一遍

  • 下載 npm

Bingo@DESKTOP-19C7BJT MINGW64 ~

$ git clone --recursive git://github.com/isaacs/npm.git

?

Cloning into 'npm'...

remote: Counting objects: 63481, done.

remote: Compressing objects: 100% (23/23), done.

remote: Total 63481 (delta 5), reused 0 (delta 0), pack-reused 63458

Receiving objects: 100% (63481/63481), 32.37 MiB | 399.00 KiB/s, done.

Resolving deltas: 100% (35818/35818), done.

Checking connectivity... done.

Checking out files: 100% (3096/3096), done.

  • 安裝npm

Bingo@DESKTOP-19C7BJT MINGW64 ~

$ cd npm

Bingo@DESKTOP-19C7BJT MINGW64 ~/npm (latest)

$ node cli.js install npm -gf

  • 驗證

Bingo@DESKTOP-19C7BJT MINGW64 ~/npm (latest)

$ npm -v

3.最后要提醒,如果出現:npm ERR! Error: EPERM: operation not permitted這樣的錯誤,解決方法是:

 a.最簡單的方法如下:
  windows??+??X 組合鍵就可以打開下圖

選擇要管理員運行的請選框起來的第二個也可以按windows+x+a
  b.或者,使用搜索cmd,打開之后,選擇"使用管理員權限運行CMD";

  但問題是,這種方式需要每次都這樣打開,我希望默認能夠就是管理員方式運行。其實也有一勞永逸的方法,如下;
  c.修改注冊表;
? ? ? ?Win+R --輸入 regedit,打開注冊表,找到以下位置:  HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
  ,新建一個字符串值,命名為"c:\windows\system32\cmd.exe",一般情況下,cmd.exe都安裝在C盤

  然后右鍵--修改 -- 數值數據寫入“RUNASADMIN”,確定 !

  或者,也可以采用注冊表導入的方式操作,如下:
  直接復制下面內容(系統安裝在C盤32位為準):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"c:\\windows\\system32\\cmd.exe"="RUNASADMIN"
  打開記事本,復制粘貼入以上代碼,另存為hao.reg,然后雙擊導入注冊表即可。
  OK,這下我們Win+R輸入cmd,啟動時就已經默認是管理員身份了。

  d.修改文件目錄所有者:?進入nodejs的安裝目錄 (默認是 C:\Program Files\nodejs),或者C:\Program Files;

  在nodejs上右鍵打開屬性;

  選擇安全-->高級,這時候會看到所有這是SYSTEM,選擇"修改";
  輸入你目前的賬戶名稱,并檢查OK之后,OK保存;

4.全局安裝express:

5.選擇一個目錄作為項目目錄:(e:/GitHub/music)

express -e music

6.

.

?

7.安裝一個實時監聽的小工具:supervisor

8.實時監測www這個項目

當看到下面這個界面,就說明可以訪問了:

9.express默認訪問的是3000端口,所以在瀏覽器中輸入:127.0.0.1:3000即可訪問:

當出現這個界面的時候,說明后臺已經構建好了。

二.前端界面的實現:

1.用sunlime打開上面構建的music文件。

?2.在index.ejs中搭建界面的大致輪廓,代碼如下:

<!DOCTYPE html> <html><head><title><%= title %></title><link rel='stylesheet' href='/stylesheets/index.css' /></head><body><header><h1><%= title %></h1></header><div class="left"><ul>
//用循環語句把文件中歌曲的名字上傳到界面<% music.forEach(function(name){%><li><%=name%></li><%})%></ul> </div> <div class="right"></div></body> </html>

3.接下來要給輪廓穿上衣服:

*{padding: 0;margin: 0;box-sizing: border-box; } html, body{height: 100%; } body {font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;background: #000;color: #fff;text-align: center; } header, .left, .right{position: absolute; } header{left: 10px;top: 10px;right: 10px;height: 150px;border:solid #fff 1px; } header h1{font-size: 40px;height: 60px;line-height: 60px; } .left{left: 10px;top: 170px;bottom: 10px;width: 200px;border: solid #fff 1px; } .left ul{overflow: auto; } .left ul li{height: 30px;line-height: 30px;cursor: pointer; } .left ul li.selected{color: green; }.right{ top: 170px;right: 10px;bottom: 10px;left: 220px;border: solid #fff 1px; }

3.獲取每一個音頻文件的名字:

var express = require('express'); var router = express.Router(); var path=require("path"); var media=path.join(__dirname,"../public/media"); /* GET home page. */ router.get('/', function(req, res) {var fs=require("fs");fs.readdir(media,function(err,names){if (err) {console.log(err);}else{res.render('index',{title:'special Music',music:names});}}); }); module.exports = router;

4.ajax請求服務端獲取音頻資源數據:

//這一段是為了讓界面實現鼠標覆蓋時發生改變
function
w(s){return document.querySelectorAll(s); } var lis=w("#list li");for(var i=0;i<lis.length;i++){ lis[i].onclick=function(){for(var j=0;j<lis.length;j++){lis[j].className="";}this.className="selected";load("/media/"+this.title); } } //這一段是ajax請求服務端獲取音頻資源數據 var xhr=new XMLHttpRequest(); function load(url){ xhr.open("GET",url); xhr.responseType="arraybuffer"; xhr.onload=function(){console.log(xhr.response); } xhr.send(); }

5.(該項目的核心)解碼并且播放音頻資源:WebAudio API

代碼實現部分:

?

---恢復內容結束---

轉載于:https://www.cnblogs.com/java-7/p/6725832.html

總結

以上是生活随笔為你收集整理的Html5音乐可视化之音乐的获取和播放的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。