soiz1 commited on
Commit
dcba3c1
·
verified ·
1 Parent(s): 194d6e2

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +42 -31
index.html CHANGED
@@ -692,7 +692,7 @@
692
  <div class="video-placeholder" id="videoPlaceholder" style="display: none;">
693
  音声/字幕のみモード
694
  </div>
695
- <video id="videoPlayer" src="v.mp4">
696
  <track id="subtitleTrackElement" kind="subtitles" src="v.vtt" srclang="ja" label="日本語" default>
697
  </track>
698
  </video>
@@ -783,44 +783,55 @@
783
  }
784
 
785
  // プレビュー画像を生成
786
- function generatePreview(time) {
787
- if (isGeneratingPreview) return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
788
 
789
  try {
790
- isGeneratingPreview = true;
791
- createPreviewCanvas();
 
 
 
792
 
793
- // 動画の現在の時間を保存
794
- const currentTime = video.currentTime;
795
 
796
- // 指定された時間にシーク
797
- video.currentTime = time;
798
-
799
- // フレームが更新されるのを待つ
800
- video.addEventListener('seeked', function onSeeked() {
801
- video.removeEventListener('seeked', onSeeked);
802
-
803
- // キャンバスにフレームを描画
804
- const ctx = canvas.getContext('2d');
805
- canvas.width = video.videoWidth;
806
- canvas.height = video.videoHeight;
807
- ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
808
-
809
- // プレビュー用に縮小
810
- previewContext.drawImage(canvas, 0, 0, previewCanvas.width, previewCanvas.height);
811
-
812
  // プレビューフレームに表示
813
  previewFrame.style.backgroundImage = `url(${previewCanvas.toDataURL()})`;
814
-
815
- // 元の時間に戻す
816
- video.currentTime = currentTime;
817
- isGeneratingPreview = false;
818
- });
819
  } catch (e) {
820
- console.error('Preview generation error:', e);
821
- isGeneratingPreview = false;
822
  }
823
- }
 
 
 
 
 
 
 
 
 
824
 
825
  // プレビューツールチップを表示
826
  function showPreviewTooltip(e) {
 
692
  <div class="video-placeholder" id="videoPlaceholder" style="display: none;">
693
  音声/字幕のみモード
694
  </div>
695
+ <video id="videoPlayer" src="v.mp4" crossorigin="anonymous">
696
  <track id="subtitleTrackElement" kind="subtitles" src="v.vtt" srclang="ja" label="日本語" default>
697
  </track>
698
  </video>
 
783
  }
784
 
785
  // プレビュー画像を生成
786
+ // プレビュー画像を生成
787
+ function generatePreview(time) {
788
+ if (isGeneratingPreview) return;
789
+
790
+ try {
791
+ isGeneratingPreview = true;
792
+ createPreviewCanvas();
793
+
794
+ // 動画の現在の時間を保存
795
+ const currentTime = video.currentTime;
796
+
797
+ // 指定された時間にシーク
798
+ video.currentTime = time;
799
+
800
+ // フレームが更新されるのを待つ
801
+ video.addEventListener('seeked', function onSeeked() {
802
+ video.removeEventListener('seeked', onSeeked);
803
 
804
  try {
805
+ // キャンバスにフレームを描画
806
+ const ctx = canvas.getContext('2d');
807
+ canvas.width = video.videoWidth;
808
+ canvas.height = video.videoHeight;
809
+ ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
810
 
811
+ // プレビュー用に縮小
812
+ previewContext.drawImage(canvas, 0, 0, previewCanvas.width, previewCanvas.height);
813
 
814
+ try {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
815
  // プレビューフレームに表示
816
  previewFrame.style.backgroundImage = `url(${previewCanvas.toDataURL()})`;
817
+ } catch (e) {
818
+ console.error('Canvas export error:', e);
819
+ // エラー時の代替処理(単色背景など)
820
+ previewFrame.style.backgroundImage = 'linear-gradient(to bottom, #0066ff, #00aaff)';
821
+ }
822
  } catch (e) {
823
+ console.error('Canvas drawing error:', e);
 
824
  }
825
+
826
+ // 元の時間に戻す
827
+ video.currentTime = currentTime;
828
+ isGeneratingPreview = false;
829
+ });
830
+ } catch (e) {
831
+ console.error('Preview generation error:', e);
832
+ isGeneratingPreview = false;
833
+ }
834
+ }
835
 
836
  // プレビューツールチップを表示
837
  function showPreviewTooltip(e) {