soiz1 commited on
Commit
98dca72
·
verified ·
1 Parent(s): ed0d13c

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +16 -3
index.html CHANGED
@@ -51,8 +51,8 @@
51
 
52
  <div class="control-group">
53
  <label for="volumeRange">音量:</label>
54
- <input type="range" id="volumeRange" min="0" max="1000" step="0.01" value="100">
55
- <input type="number" id="volumeInput" min="0" max="1000" step="0.01" value="100">%
56
  </div>
57
 
58
  <div class="control-group">
@@ -71,6 +71,14 @@
71
  const volumeInput = document.getElementById('volumeInput');
72
  const loopCheckbox = document.getElementById('loopCheckbox');
73
 
 
 
 
 
 
 
 
 
74
  function updatePlaybackRate(value) {
75
  const speed = parseFloat(value);
76
  speedInput.value = speed;
@@ -78,13 +86,16 @@
78
  video.playbackRate = speed;
79
  }
80
 
 
81
  function updateVolume(value) {
82
  const volume = parseFloat(value);
83
  volumeInput.value = volume;
84
  volumeRange.value = volume;
85
- video.volume = volume/100;
 
86
  }
87
 
 
88
  ['input', 'change', 'mouseup'].forEach(eventName => {
89
  speedRange.addEventListener(eventName, () => {
90
  updatePlaybackRate(speedRange.value);
@@ -106,6 +117,7 @@
106
  video.loop = loopCheckbox.checked;
107
  });
108
 
 
109
  function goFullscreen() {
110
  if (video.requestFullscreen) {
111
  video.requestFullscreen();
@@ -116,6 +128,7 @@
116
  }
117
  }
118
 
 
119
  video.addEventListener('loadedmetadata', () => {
120
  updatePlaybackRate(speedRange.value);
121
  updateVolume(volumeRange.value);
 
51
 
52
  <div class="control-group">
53
  <label for="volumeRange">音量:</label>
54
+ <input type="range" id="volumeRange" min="0" max="100" step="1" value="100">
55
+ <input type="number" id="volumeInput" min="0" max="100" step="1" value="100">%
56
  </div>
57
 
58
  <div class="control-group">
 
71
  const volumeInput = document.getElementById('volumeInput');
72
  const loopCheckbox = document.getElementById('loopCheckbox');
73
 
74
+ // Web Audio APIの設定
75
+ const audioContext = new (window.AudioContext || window.webkitAudioContext)();
76
+ const gainNode = audioContext.createGain();
77
+ const sourceNode = audioContext.createMediaElementSource(video);
78
+ sourceNode.connect(gainNode);
79
+ gainNode.connect(audioContext.destination);
80
+
81
+ // 再生速度の更新
82
  function updatePlaybackRate(value) {
83
  const speed = parseFloat(value);
84
  speedInput.value = speed;
 
86
  video.playbackRate = speed;
87
  }
88
 
89
+ // 音量の更新
90
  function updateVolume(value) {
91
  const volume = parseFloat(value);
92
  volumeInput.value = volume;
93
  volumeRange.value = volume;
94
+ // GainNodeの音量設定(1.0以上)
95
+ gainNode.gain.value = volume / 100; // 0〜1の範囲として設定
96
  }
97
 
98
+ // イベントリスナーの設定
99
  ['input', 'change', 'mouseup'].forEach(eventName => {
100
  speedRange.addEventListener(eventName, () => {
101
  updatePlaybackRate(speedRange.value);
 
117
  video.loop = loopCheckbox.checked;
118
  });
119
 
120
+ // 全画面モード
121
  function goFullscreen() {
122
  if (video.requestFullscreen) {
123
  video.requestFullscreen();
 
128
  }
129
  }
130
 
131
+ // メタデータの読み込み後に初期設定
132
  video.addEventListener('loadedmetadata', () => {
133
  updatePlaybackRate(speedRange.value);
134
  updateVolume(volumeRange.value);