HTML5 Audio タグと JavaScript で音声ファイルを再生する方法

2024-04-02

JavaScript、HTML、HTML5 Audio を使用して音声ファイルを再生する方法

HTML5 Audio タグ

基本的な使い方

<audio controls>
  <source src="audio.mp3" type="audio/mpeg">
  <source src="audio.ogg" type="audio/ogg">
</audio>

上記コードは、audio.mp3audio.ogg という2つの音声ファイルを再生するためのものです。

  • controls 属性は、ブラウザ内蔵のプレーヤーコントロールを表示します。
  • source 要素は、再生する音声ファイルのパスとファイル形式を指定します。

複数のファイル形式に対応

ブラウザはさまざまな音声ファイル形式に対応していますが、すべてのブラウザがすべての形式に対応しているわけではありません。そのため、複数のファイル形式を用意しておくことで、多くのユーザーで音声ファイルを再生することができます。

JavaScript を使用して再生を制御

audio タグは JavaScript を使用して、再生を制御することができます。以下は、JavaScript で音声ファイルを再生する例です。

<audio id="my-audio">
  <source src="audio.mp3" type="audio/mpeg">
</audio>
const audio = document.getElementById('my-audio');

// 再生
audio.play();

// 一時停止
audio.pause();

// 音量調整
audio.volume = 0.5;

// 再生時間の取得
const currentTime = audio.currentTime;

// 再生時間の設定
audio.currentTime = 10;

HTML5 Audio タグと JavaScript を使用することで、Web ページ上で簡単に音声ファイルを再生することができます。この機能を活用することで、音楽再生、音声解説、効果音など、さまざまな用途に利用できます。




HTML

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>音声ファイル再生サンプル</title>
</head>
<body>
  <audio id="my-audio" controls>
    <source src="audio.mp3" type="audio/mpeg">
  </audio>
  
  <script src="script.js"></script>
</body>
</html>

JavaScript

const audio = document.getElementById('my-audio');

// 再生ボタン
const playButton = document.getElementById('play-button');
playButton.addEventListener('click', () => {
  audio.play();
});

// 一時停止ボタン
const pauseButton = document.getElementById('pause-button');
pauseButton.addEventListener('click', () => {
  audio.pause();
});

// 音量調整スライダー
const volumeSlider = document.getElementById('volume-slider');
volumeSlider.addEventListener('input', () => {
  audio.volume = volumeSlider.value;
});

// 再生時間表示
const currentTimeLabel = document.getElementById('current-time');
setInterval(() => {
  currentTimeLabel.textContent = audio.currentTime.toFixed(2);
}, 100);

動作

上記のコードを実行すると、ブラウザに音声プレイヤーが表示されます。再生ボタンをクリックすると音声ファイルが再生され、一時停止ボタンをクリックすると一時停止します。音量調整スライダーで音量を調整できます。また、再生時間表示ラベルに現在の再生時間が表示されます。

応用

上記のコードをベースに、さまざまな機能を追加することができます。

  • 再生終了時に次のファイル
  • 音声ファイルのリストを表示
  • シークバーによる再生時間の移動
  • 音声の可視化

これらの機能を追加することで、より高度な音声プレイヤーを作成することができます。




音声ファイル再生のその他の方法

Web Audio API は、Web ページ上で高度な音声処理を行うための API です。HTML5 Audio タグよりも複雑ですが、より多くの機能と柔軟性を提供します。

  • 音声ファイルの再生
  • 音声の合成
  • 音声のエフェクト処理
  • 音声の分析

など、さまざまな操作を行うことができます。

サードパーティライブラリ

SoundManager2 や Howler.js などのサードパーティライブラリを使用するのも良い方法です。これらのライブラリは、HTML5 Audio タグよりも多くの機能と使いやすさを提供します。

  • 複数の音声ファイルを同時に再生
  • 音声のフェードイン/フェードアウト
  • 音声のループ再生

サーバーサイド処理

音声ファイルをサーバーで処理し、ブラウザに送信する方法もあります。この方法は、大量のデータを送信する必要がある場合や、複雑な処理を行う場合に有効です。

  • シンプルな音声再生であれば、HTML5 Audio タグで十分です。
  • より高度な機能が必要であれば、Web Audio API やサードパーティライブラリを使用します。
  • 大量のデータを送信する必要がある場合は、サーバーサイド処理を使用します。

それぞれの方法のメリットとデメリットを理解した上で、最適な方法を選択してください。


javascript html html5-audio


レスポンシブデザインにも対応!背景画像を伸縮させる

CSS解説background-image プロパティで背景画像のURLを指定します。background-size: cover; は、背景画像を要素のサイズに合わせて伸縮させ、常に要素全体を覆うように表示します。レスポンシブデザインの場合は、メディアクエリを使ってデバイスごとに背景画像のサイズを調整する必要があります。...


sectionとdivを使いこなして、ワンランク上のWebサイトを作ろう!

section: 文書を論理的に独立したセクションに分割します。各セクションは、見出しと本文で構成されます。div: 特に意味を持たずに、ブロックレベルの要素を囲みます。例:section: 文書を章、節、あるいは独立した内容に分割する場合 見出しと本文で構成されるセクションを区別する場合...


fs.realpathSync() と path.dirname() を使って親フォルダを見つける

このチュートリアルでは、JavaScript、Node. js、およびファイルシステムを使用して、現在のフォルダの親フォルダを見つける方法について説明します。要件このチュートリアルを完了するには、以下のものが必要です。基本的な JavaScript の知識...


【初心者向け】HTMLのminlength属性で入力文字数を制限する方法:3つの方法とサンプルコード

答え:はい、あります。minlength属性は、入力フィールドに入力できる最小文字数を指定するために使用されます。これは、ユーザーが入力する情報の整合性を保つのに役立ちます。使用方法:minlength属性は、input要素に追加します。値は、入力フィールドに入力できる最小文字数です。...


React Native でカスタムナビゲーションを自在に操る:Navigator コンポーネントの徹底解説

本ガイドでは、Navigator コンポーネントの仕組みと、それを用いてカスタムナビゲーションを実装する方法を、JavaScript、iOS の観点から分かりやすく解説します。Navigator コンポーネントは、React Navigation のコア機能の一つであり、画面遷移の管理とレンダリングを担う基盤となるコンポーネントです。デフォルトでは、スタックナビゲーションやタブナビゲーションなどのプリセットされたナビゲーションパターンを提供しますが、独自のカスタマイズも可能です。...