soiz1 commited on
Commit
0c4d0b6
·
verified ·
1 Parent(s): 1ae3bbc

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +14 -95
index.html CHANGED
@@ -36,16 +36,11 @@
36
  input[type="number"] {
37
  width: 60px;
38
  }
39
- #audioWarning {
40
- color: red;
41
- display: none;
42
- }
43
  </style>
44
  </head>
45
  <body>
46
  <h1>動画プレイヤー</h1>
47
  <video id="videoPlayer" src="v.mp4" controls></video>
48
- <p id="audioWarning">音量増幅機能を使用するには、動画を再生してください</p>
49
 
50
  <div class="controls">
51
  <div class="control-group">
@@ -56,8 +51,8 @@
56
 
57
  <div class="control-group">
58
  <label for="volumeRange">音量:</label>
59
- <input type="range" id="volumeRange" min="0" max="1000" step="1" value="100">
60
- <input type="number" id="volumeInput" min="0" max="1000" step="1" value="100">%
61
  </div>
62
 
63
  <div class="control-group">
@@ -67,6 +62,7 @@
67
 
68
  <button onclick="goFullscreen()">全画面</button>
69
  </div>
 
70
  <script>
71
  const video = document.getElementById('videoPlayer');
72
  const speedRange = document.getElementById('speedRange');
@@ -74,40 +70,9 @@
74
  const volumeRange = document.getElementById('volumeRange');
75
  const volumeInput = document.getElementById('volumeInput');
76
  const loopCheckbox = document.getElementById('loopCheckbox');
77
- const audioWarning = document.getElementById('audioWarning');
78
-
79
- let audioContext = null;
80
- let source = null;
81
- let gainNode = null;
82
- let audioInitialized = false;
83
-
84
- function setupAudio() {
85
- try {
86
- audioContext = new (window.AudioContext || window.webkitAudioContext)();
87
- source = audioContext.createMediaElementSource(video);
88
- gainNode = audioContext.createGain();
89
-
90
- source.connect(gainNode);
91
- gainNode.connect(audioContext.destination);
92
-
93
- updateVolume(volumeRange.value);
94
- audioInitialized = true;
95
- audioWarning.style.display = 'none';
96
- } catch (e) {
97
- const msg = "音量増幅機能が使用できません: " + e.message;
98
- audioWarning.textContent = msg;
99
- audioWarning.style.display = 'block';
100
- alert(msg);
101
- }
102
- }
103
 
104
  function updatePlaybackRate(value) {
105
  const speed = parseFloat(value);
106
- if (isNaN(speed) || speed <= 0) {
107
- const msg = "再生速度が不正です: " + value;
108
- alert(msg);
109
- return;
110
- }
111
  speedInput.value = speed;
112
  speedRange.value = speed;
113
  video.playbackRate = speed;
@@ -115,29 +80,9 @@
115
 
116
  function updateVolume(value) {
117
  const volume = parseFloat(value);
118
- if (isNaN(volume) || volume < 0) {
119
- const msg = "音量の値が不正です: " + value;
120
- alert(msg);
121
- return;
122
- }
123
  volumeInput.value = volume;
124
  volumeRange.value = volume;
125
-
126
- if (audioInitialized && gainNode) {
127
- try {
128
- gainNode.gain.value = volume / 100;
129
- } catch (e) {
130
- const msg = "音量設定中にエラーが発生しました: " + e.message;
131
- alert(msg);
132
- }
133
- } else {
134
- try {
135
- video.volume = Math.min(volume / 100, 1);
136
- } catch (e) {
137
- const msg = "標準音量設定に失敗しました: " + e.message;
138
- alert(msg);
139
- }
140
- }
141
  }
142
 
143
  ['input', 'change', 'mouseup'].forEach(eventName => {
@@ -162,46 +107,20 @@
162
  });
163
 
164
  function goFullscreen() {
165
- try {
166
- if (video.requestFullscreen) {
167
- video.requestFullscreen();
168
- } else if (video.webkitRequestFullscreen) {
169
- video.webkitRequestFullscreen();
170
- } else if (video.msRequestFullscreen) {
171
- video.msRequestFullscreen();
172
- } else {
173
- alert("全画面表示はこのブラウザではサポートされていません。");
174
- }
175
- } catch (e) {
176
- alert("全画面モードに失敗しました: " + e.message);
177
  }
178
  }
179
 
180
- video.addEventListener('play', () => {
181
- if (!audioInitialized) {
182
- setupAudio();
183
- } else if (audioContext && audioContext.state === 'suspended') {
184
- audioContext.resume().catch(e => {
185
- const msg = "AudioContextの再開に失敗しました: " + e.message;
186
- alert(msg);
187
- });
188
- }
189
- });
190
-
191
  video.addEventListener('loadedmetadata', () => {
192
- try {
193
- updatePlaybackRate(speedRange.value);
194
- updateVolume(volumeRange.value);
195
- video.loop = loopCheckbox.checked;
196
- } catch (e) {
197
- alert("動画のメタデータ読み込み処理でエラーが発生しました: " + e.message);
198
- }
199
  });
200
-
201
- // 初期警告表示
202
- audioWarning.style.display = 'block';
203
- alert("音量増幅機能を使用するには、動画を再生してください");
204
  </script>
205
-
206
  </body>
207
- </html>
 
36
  input[type="number"] {
37
  width: 60px;
38
  }
 
 
 
 
39
  </style>
40
  </head>
41
  <body>
42
  <h1>動画プレイヤー</h1>
43
  <video id="videoPlayer" src="v.mp4" controls></video>
 
44
 
45
  <div class="controls">
46
  <div class="control-group">
 
51
 
52
  <div class="control-group">
53
  <label for="volumeRange">音量:</label>
54
+ <input type="range" id="volumeRange" min="0" max="1" step="0.01" value="1">
55
+ <input type="number" id="volumeInput" min="0" max="1" step="0.01" value="1">
56
  </div>
57
 
58
  <div class="control-group">
 
62
 
63
  <button onclick="goFullscreen()">全画面</button>
64
  </div>
65
+
66
  <script>
67
  const video = document.getElementById('videoPlayer');
68
  const speedRange = document.getElementById('speedRange');
 
70
  const volumeRange = document.getElementById('volumeRange');
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;
77
  speedRange.value = speed;
78
  video.playbackRate = speed;
 
80
 
81
  function updateVolume(value) {
82
  const volume = parseFloat(value);
 
 
 
 
 
83
  volumeInput.value = volume;
84
  volumeRange.value = volume;
85
+ video.volume = volume;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
  ['input', 'change', 'mouseup'].forEach(eventName => {
 
107
  });
108
 
109
  function goFullscreen() {
110
+ if (video.requestFullscreen) {
111
+ video.requestFullscreen();
112
+ } else if (video.webkitRequestFullscreen) {
113
+ video.webkitRequestFullscreen();
114
+ } else if (video.msRequestFullscreen) {
115
+ video.msRequestFullscreen();
 
 
 
 
 
 
116
  }
117
  }
118
 
 
 
 
 
 
 
 
 
 
 
 
119
  video.addEventListener('loadedmetadata', () => {
120
+ updatePlaybackRate(speedRange.value);
121
+ updateVolume(volumeRange.value);
122
+ video.loop = loopCheckbox.checked;
 
 
 
 
123
  });
 
 
 
 
124
  </script>
 
125
  </body>
126
+ </html>