検索
ホームページウェブフロントエンドH5 チュートリアルHTML5 音楽ビジュアライゼーションのビデオ チュートリアルに関するリソースの推奨事項

単純な音楽再生は単調すぎませんか? 音楽を聴きながら見ることができれば、さらに面白くなります。このコースでは、webAudio と Canvas を使用して、音楽を好きな形で視覚化し、音楽を動かすことができます。

HTML5 音楽ビジュアライゼーションのビデオ チュートリアルに関するリソースの推奨事項

コース再生アドレス: http://www.php.cn/course/327.html

教師の指導スタイル:

教師の講義はシンプルかつ奥深く、構造が明確です、相互に接続された厳密な議論、厳密な構造を層ごとに分析し、論理的思考力を使用して生徒の注意を引き、理性を使用して教室での指導プロセスを制御します。教師の講義を聞くことで、学生は知識を学ぶだけでなく、思考のトレーニングも受け、教師の厳格な学問的態度に影響され、影響を受けます。このビデオのさらに難しい部分は、HTML5 音楽の視覚化です:

音楽の取得と再生

アプリケーションのフロントエンドとバックエンドを構築します

1. 新しいメディア データ フォルダー public/media を作成し、そこにオーディオ データを配置します

2. ページの CSS フレームワークを構築します。 、/public/stylesheets/index.css

3、ページコンテンツの読み取り、views/index.ejs

4、バックグラウンドルーティング制御、routes/index.js、音楽リストを取得してフロントセクションに返す

ajaxリクエストサーバーサイドオーディオデータ

JavaScriptの下に新しいファイルindex.jsを作成し、作成したファイルをviews/index.ejsで参照します

<script type="text/javascript" src="/javascripts/index.js"></script>

作成したファイルを編集してクリック効果を実現します

<ul id="list">
        <% music.forEach(function(name){ %>
              <li title="<%= name %>"><%= name %></li>    #设置title属性
        <% }) %>
</ul>

オーディオをデコードして再生する

AudioContext

には、各 AudioNode オブジェクトとその接続オブジェクト、つまりオーディオ コンテキスト オブジェクトが含まれています。ドキュメント内に作成される AudioContext は 1 つだけです: var ac = new window.AudioContext();

属性:

destination、AudioDestinationNode オブジェクト。すべてのオーディオ出力が集まり、オーディオ ハードウェアに相当し、すべての AudioNode が直接または間接的に接続されます。ここ。

currentTime、AudioContextの作成から現在までの時間(秒)。

メソッド:

decodeAudioData(arrayBuffer,succ(buffer),err)、arrayBufferに含まれる音声データを非同期でデコード

createBufferSource()、autoBufferSourceNodeオブジェクトを作成

createAnalyser()、AnalyserNodeオブジェクトを作成

createGain() /createGainNode () は、GainNode オブジェクトを作成します。

AudioBufferSourceNode

はメモリ内のオーディオ リソースを表し、そのオーディオ データは AudioBuffer (そのバッファ属性) に保存されます。バッファ、AudioBuffer オブジェクトは、再生されるオーディオ リソース データを表します

- サブ属性:duration、オーディオ リソースの継続時間 (秒)

loop、ループ再生するかどうか、デフォルトは false

onended、バインドされたオーディオの再生が完了しました タイム ハンドラー

メソッド:


start/noteOn(when=ac.currentTime,offset=0,buration=buffer.duration-offset) は、オーディオの再生を開始します。

when: 再生を開始するタイミング;

offset: オーディオの再生を開始する秒数;

duration: 再生する秒数

stop/noteOff(when=ac.currentTime)、オーディオの再生を終了する

ボリュームコントロールを追加します


GainNode

オーディオボリュームを変更し、オーディオデータを渡すすべてのサンプルフレームの信号強度を変更するオブジェクト

Create: var GainNode = ac.createGain()/ac.createGainNode();

gain, AudioParamオブジェクトの値を変更することで、オーディオ信号の強度を変更できます。デフォルト値の属性値は 1、最小値は 0、最大値は 1 です。値は 1 より大きく、0 未満にすることもできます

再生バグ修正

問題: 2 番目の曲を再生する 曲を再生するときに、最初の曲がまだ再生されている主な原因は、音楽リストをクリックするたびに、load("/media/"+this.title) が行われることです。が呼び出され、データがデコードされて再生されます:

xhr.onload = function(){
    ac.decodeAudioData(xhr.response, function(buffer){
        var bufferSource = ac.createBufferSource();
        bufferSource.buffer = buffer;
        bufferSource.connect(gainNode);
        bufferSource[bufferSource.start?"start":"noteOn"](0);
    }, function(err){
                console.log(err);
    });
}

解決策:

オーディオデータにNull値を割り当てます varsource = null;、前の曲のデコードされたデータを保存しますsource =bufferSource;、ソース&&ソースの再生を停止するように実行を判断します[source.stop ? "stop" : "noteoff"](0);

音楽データの可視化

AnalyserNode

音频分析对象,它能实时的分析音频资源的频域和时域信息,但不会对音频流做任何处理
创建:var analyser = ac.createAnalyser();

fftSize,设置FFT(FFT是离散傅里叶变换的快速算法,用于将一个信号变换到频域)值得大小,用于分析得到频域,为32 - 2048之间2的整数倍,默认为2048。实时得到的音频频域的数据个数为FFTSize的一半

frequencyBinCount,FFT值得一半,即实时得到的音频频域的数据个数

getByteFrequencyData(Uint8Array),复制音频当前的频域数据(数量是FrequencyBinCount)到Uint8Array(8位无符号整型类型化数组)中

创建Analyser对象:

var analyser = ac.createAnalyser();
analyser.fftSize = 512;
analyser.connect(gainNode);

连接到分

析对象获取数据:bufferSource.connect(analyser);

实现可视化功能函数:

function visualizer(){
    var arr = new Uint8Array(analyser.frequencyBinCount);
    analyser.getByteFrequencyData(arr);
    console.log(arr);
}

调用visualizer函数:

利用canvas将音乐数据可视化(柱状图)

在views下加入id

控制高度变化:

var box = $("#box")[0];
var height, width;
var canvas = document.createElement("canvas");
box.appendChild(canvas);
 
function resize(){
    height = box.clientHeight;
    width = box.clientWidth;
    canvas.height = height;
    canvas.width = width;
}
resize();    #调用触发函数
 
window.onresize = resize;

利用canvas将音乐数据可视化(圆点图)

应用优化

webAudio API

webAudio核心功能封装为对象

以上がHTML5 音楽ビジュアライゼーションのビデオ チュートリアルに関するリソースの推奨事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
H5コードの例:実用的なアプリケーションとチュートリアルH5コードの例:実用的なアプリケーションとチュートリアルApr 25, 2025 am 12:10 AM

H5は、さまざまな新機能と機能を提供し、フロントエンド開発の機能を大幅に向上させます。 1.マルチメディアサポート:メディアを埋め込んで要素を埋め込み、プラグインは必要ありません。 2。キャンバス:要素を使用して、2Dグラフィックとアニメーションを動的にレンダリングします。 3。ローカルストレージ:ユーザーエクスペリエンスを改善するために、ローカルストレージとセッションストレージを介して永続的なデータストレージを実装します。

H5とHTML5の接続:類似性と相違点H5とHTML5の接続:類似性と相違点Apr 24, 2025 am 12:01 AM

H5とHTML5は異なる概念です。HTML5は、新しい要素とAPIを含むHTMLのバージョンです。 H5は、HTML5に基づくモバイルアプリケーション開発フレームワークです。 HTML5はブラウザを介してコードを解析およびレンダリングしますが、H5アプリケーションはコンテナを実行し、JavaScriptを介してネイティブコードと対話する必要があります。

H5コードの構成要素:キー要素とその目的H5コードの構成要素:キー要素とその目的Apr 23, 2025 am 12:09 AM

HTML5の重要な要素には、最新のWebページの構築に使用される、、,,,,などが含まれます。 1.ヘッドコンテンツを定義します。2。リンクをナビゲートするために使用されます。3。独立した記事のコンテンツを表します。4。ページコンテンツを整理します。5。サイドバーコンテンツを表示します。

HTML5およびH5:一般的な使用法の理解HTML5およびH5:一般的な使用法の理解Apr 22, 2025 am 12:01 AM

HTML5とHTML5の略語であるHTML5とH5の間に違いはありません。 1.HTML5はHTMLの5番目のバージョンであり、Webページのマルチメディア関数とインタラクティブ機能を強化します。 2.H5は、HTML5ベースのモバイルWebページまたはアプリケーションを参照するためによく使用され、さまざまなモバイルデバイスに適しています。

HTML5:現代のウェブのビルディングブロック(H5)HTML5:現代のウェブのビルディングブロック(H5)Apr 21, 2025 am 12:05 AM

HTML5は、W3Cによって標準化されたHyperText Markup言語の最新バージョンです。 HTML5は、新しいセマンティックタグ、マルチメディアサポート、フォームの強化、Web構造の改善、ユーザーエクスペリエンス、SEO効果を導入します。 HTML5は、Webページ構造をより明確にし、SEO効果をより良くするために、、、、、、などの新しいセマンティックタグを導入します。 HTML5はマルチメディア要素をサポートしており、サードパーティのプラグインは不要で、ユーザーエクスペリエンスと読み込み速度が向上します。 HTML5はフォーム関数を強化し、ユーザーエクスペリエンスを向上させ、フォーム検証効率を向上させるなどの新しい入力タイプを導入します。

H5コード:クリーンで効率的なHTML5の書き込みH5コード:クリーンで効率的なHTML5の書き込みApr 20, 2025 am 12:06 AM

クリーンで効率的なHTML5コードを書き込む方法は?答えは、タグのセマンティック、構造化されたコード、パフォーマンスの最適化、一般的な間違いを回避することにより、一般的な間違いを避けることです。 1.コードの読みやすさとSEO効果を改善するには、セマンティックタグなどを使用します。 2。適切なインデントとコメントを使用して、コードを構造化して読みやすいままにします。 3.不必要なタグを減らし、CDNを使用してコードを圧縮することにより、パフォーマンスを最適化します。 4.タグが閉じていないなどの一般的な間違いを避け、コードの有効性を確認してください。

H5:ウェブ上のユーザーエクスペリエンスをどのように強化するかH5:ウェブ上のユーザーエクスペリエンスをどのように強化するかApr 19, 2025 am 12:08 AM

H5は、マルチメディアサポート、オフラインストレージ、パフォーマンスの最適化により、Webユーザーエクスペリエンスを向上させます。 1)マルチメディアサポート:H5と要素は、開発を簡素化し、ユーザーエクスペリエンスを向上させます。 2)オフラインストレージ:WebStorageとIndexEdDBは、エクスペリエンスを改善するためにオフラインで使用できるようにします。 3)パフォーマンスの最適化:ウェブワーカーと要素は、パフォーマンスを最適化して帯域幅の消費を削減します。

H5コードの分解:タグ、要素、属性H5コードの分解:タグ、要素、属性Apr 18, 2025 am 12:06 AM

HTML5コードは、タグ、要素、属性で構成されています。1。タグはコンテンツタイプを定義し、などの角度ブラケットに囲まれています。 2。要素は、startタグ、内容、および内容などのエンドタグで構成されています。 3。属性は、開始タグのキー値のペアを定義し、ような関数を強化します。これらは、Web構造を構築するための基本ユニットです。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター