soiz1 commited on
Commit
d49fdd4
·
1 Parent(s): 634e66f

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +60 -18
index.html CHANGED
@@ -1088,6 +1088,9 @@
1088
  <button class="time-set-button" id="reset-end-time" disabled>動画の長さに戻す</button>
1089
  </div>
1090
  </div>
 
 
 
1091
  <h2>設定</h2>
1092
  <div class="setting-item">
1093
  <label for="start-time">再生開始秒数:</label>
@@ -1278,6 +1281,7 @@
1278
  const tempoInput = document.getElementById('tempo');
1279
  const tempoSpeedValue = document.getElementById('tempo-speed-value');
1280
  const videoControls = document.querySelector('.video-controls');
 
1281
 
1282
  // 音声オブジェクトを作成
1283
  const audioElements = {};
@@ -1373,7 +1377,42 @@
1373
  syncAudioWithVideo();
1374
  }
1375
  }
1376
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1377
  // 音声を動画に同期させる関数
1378
  function syncAudioWithVideo() {
1379
  if (!isAudioCombined || !isPlaying) return;
@@ -1684,6 +1723,7 @@
1684
  setStartTimeBtn.disabled = false;
1685
  setEndTimeBtn.disabled = false;
1686
  playbackSpeedSlider.disabled = false;
 
1687
  }
1688
 
1689
  // プレビュー再生
@@ -1852,23 +1892,25 @@
1852
  }
1853
 
1854
  // 時間更新時の処理
1855
- video.addEventListener('timeupdate', function() {
1856
- const duration = video.duration || videoDuration;
1857
- const endTime = parseFloat(endTimeInput.value) || duration;
1858
-
1859
- if (video.currentTime >= endTime && endTime > 0) {
1860
- if (loopCheckbox.checked) {
1861
- const startTime = parseFloat(startTimeInput.value) || 0;
1862
- video.currentTime = startTime;
1863
- syncAudioWithVideo();
1864
- } else {
1865
- pauseMedia();
1866
- video.currentTime = endTime;
1867
- }
1868
- }
1869
-
1870
- updateTimeDisplay();
1871
- });
 
 
1872
 
1873
  // プログレスバークリックでシーク
1874
  progressContainer.addEventListener('click', function(e) {
 
1088
  <button class="time-set-button" id="reset-end-time" disabled>動画の長さに戻す</button>
1089
  </div>
1090
  </div>
1091
+ <div class="setting-item">
1092
+ <button class="combine-button" id="apply-time-btn" disabled>時間設定を適用</button>
1093
+ </div>
1094
  <h2>設定</h2>
1095
  <div class="setting-item">
1096
  <label for="start-time">再生開始秒数:</label>
 
1281
  const tempoInput = document.getElementById('tempo');
1282
  const tempoSpeedValue = document.getElementById('tempo-speed-value');
1283
  const videoControls = document.querySelector('.video-controls');
1284
+ const applyTimeBtn = document.getElementById('apply-time-btn');
1285
 
1286
  // 音声オブジェクトを作成
1287
  const audioElements = {};
 
1377
  syncAudioWithVideo();
1378
  }
1379
  }
1380
+
1381
+ applyTimeBtn.addEventListener('click', function() {
1382
+ // 現在再生中なら一時停止
1383
+ const wasPlaying = isPlaying;
1384
+ if (isPlaying) {
1385
+ pauseMedia();
1386
+ }
1387
+
1388
+ // 開始時間と終了時間を取得
1389
+ const startTime = parseFloat(startTimeInput.value) || 0;
1390
+ const endTime = parseFloat(endTimeInput.value) || video.duration;
1391
+
1392
+ // 現在位置が開始時間より前なら開始時間に移動
1393
+ if (video.currentTime < startTime) {
1394
+ video.currentTime = startTime;
1395
+ if (combinedAudioElement) {
1396
+ combinedAudioElement.currentTime = startTime;
1397
+ }
1398
+ }
1399
+ // 現在位置が終了時間より後なら開始時間に移動
1400
+ else if (video.currentTime > endTime) {
1401
+ video.currentTime = startTime;
1402
+ if (combinedAudioElement) {
1403
+ combinedAudioElement.currentTime = startTime;
1404
+ }
1405
+ }
1406
+
1407
+ // 再生中だった場合は再開
1408
+ if (wasPlaying) {
1409
+ playMedia();
1410
+ }
1411
+
1412
+ // マーカーを更新
1413
+ updateProgressMarkers();
1414
+ });
1415
+
1416
  // 音声を動画に同期させる関数
1417
  function syncAudioWithVideo() {
1418
  if (!isAudioCombined || !isPlaying) return;
 
1723
  setStartTimeBtn.disabled = false;
1724
  setEndTimeBtn.disabled = false;
1725
  playbackSpeedSlider.disabled = false;
1726
+ applyTimeBtn.disabled = false;
1727
  }
1728
 
1729
  // プレビュー再生
 
1892
  }
1893
 
1894
  // 時間更新時の処理
1895
+ video.addEventListener('timeupdate', function() {
1896
+ const duration = video.duration || videoDuration;
1897
+ const endTime = parseFloat(endTimeInput.value) || duration;
1898
+
1899
+ if (video.currentTime >= endTime && endTime > 0) {
1900
+ if (loopCheckbox.checked) {
1901
+ const startTime = parseFloat(startTimeInput.value) || 0;
1902
+ video.currentTime = startTime;
1903
+ if (combinedAudioElement) {
1904
+ combinedAudioElement.currentTime = startTime;
1905
+ }
1906
+ } else {
1907
+ pauseMedia();
1908
+ video.currentTime = endTime;
1909
+ }
1910
+ }
1911
+
1912
+ updateTimeDisplay();
1913
+ });
1914
 
1915
  // プログレスバークリックでシーク
1916
  progressContainer.addEventListener('click', function(e) {