![]() |
<!DOCTYPE HTML> <HTML LANG="ja"> <HEAD> <META CHARSET="Shift_JIS"> <TITLE>勝手に字幕(ローカル ファイル用)</TITLE> </HEAD> <BODY STYLE="background-color:#CCFFFF"> <DIV STYLE="text-align:center"> <BR> <B>勝手に字幕(ローカル ファイル用)</B> <BR><BR> <FORM> <TABLE STYLE="margin-left:auto; margin-right:auto"><TR><TD STYLE="text-align:left; white-space:nowrap"> <B>ファイル:</B><BR> <INPUT TYPE=FILE ID="file" SIZE=60 onChange="sel_file()"><BR><BR> <INPUT TYPE=BUTTON ID="play" VALUE="再生" DISABLED onClick="play_stop()"> </TD></TR></TABLE> </FORM> <BR> <DIV ID="base" STYLE="position:relative; width:320px; height:240px; background-color:black; margin-left:auto; margin-right:auto"> <VIDEO ID="vid" STYLE="position:absolute; left:0; top:0"></VIDEO> <DIV STYLE="position:absolute; left:0; right:0; bottom:0; pointer-events:none"> <SPAN ID="txt" STYLE="display:inline-block; text-align:left; padding:2px; font-weight:bold; color:white; text-shadow:black 0 0 0.3em; pointer-events:none"> </SPAN> </DIV> </DIV> </DIV> <SCRIPT TYPE="text/javascript"> <!-- function sel_file() { if(url_cre) URL.revokeObjectURL(elem_vid.src); elem_vid.src = URL.createObjectURL(elem_file.files.item(0)); url_cre = true; elem_vid.load(); } function play_stop() { if(playing) { // 再生中 // 停止 elem_vid.pause() stop(); return; } elem_vid.play(); } function vid_canplay() { if(!elem_vid.videoWidth) { elem_play.disabled = true; alert("再生できません。"); return; } elem_base.style.width = String(elem_vid.videoWidth) + "px"; elem_base.style.height = String(elem_vid.videoHeight) + "px"; elem_txt.style.fontSize = String(Math.max(11, 7 + Math.floor(elem_vid.videoWidth / 80))) + "pt"; elem_play.disabled = false; } function vid_play() { if(elem_play.disabled) return; if(!playing) { // 再生中でない elem_file.disabled = true; elem_play.value = "停止"; playing = true; } to_id = setTimeout(new_cap, 3000); } function vid_pause() { clearTimeout(to_id); to_id = 0; } function vid_ended() { stop(); } function vid_error() { elem_play.disabled = true; alert("再生できません。"); } function stop() { if(to_id) { clearTimeout(to_id); to_id = 0; } playing = false; elem_txt.innerHTML = ""; elem_vid.currentTime = 0; elem_file.disabled = false; elem_play.value = "再生"; } function new_cap() { elem_txt.innerHTML = caption[Math.floor(Math.random() * caption.length)]; to_id = setTimeout(new_cap, 7000 + Math.floor(Math.random() * 3000)); } //---------------------------------------------------------- caption = [ "世界初公開の貴重な映像です。", "身の毛もよだつ恐怖の心霊映像", "衝撃映像! カメラが捉えた決定的瞬間!", "独占スクープ映像! Y&K密会の現場!", "決算大セール! 赤字覚悟の大安売り!", "1個 100円、5個で 400円にオマケ!", "全国の書店、コンビニにて絶賛発売中!", "地球にやさしい、とってもエコな製品です。", "古池や 坊主転んで 河童の屁", "To be, or not to be, that is the question.", "<SPAN STYLE='font-size:120%'>This is a pen.</SPAN>", "メリーさん、メリーさん、私はあなたを愛します。", "材料 … ご飯:茶碗1杯 玉子:1個 醤油:少々", "この洗練されたフォルム、優雅な走り!", "画期的な大発明 !!", "驚異のスーパー テクノロジー", "E = m c<SUP>2</SUP>", "今日は全国各地で記録的な猛暑となりました。", "明日は猛烈な寒波が押し寄せることが予想されます。", "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>外</SPAN><SPAN STYLE='position:absolute; left:0.6em; top:-1.6em; font-size:0.55em; text-align:left'>げ</SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>道</SPAN><SPAN STYLE='position:absolute; left:0; top:-1.6em; font-size:0.55em; text-align:left'>どう</SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>照</SPAN><SPAN STYLE='position:absolute; left:-0.3em; top:-1.6em; font-size:0.55em; text-align:left'>しょう</SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>身</SPAN><SPAN STYLE='position:absolute; left:0.3em; top:-1.6em; font-size:0.55em; text-align:left'>しん</SPAN>" + "<SPAN STYLE='font-size:1.3em'> </SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>霊</SPAN><SPAN STYLE='position:absolute; left:0.1em; top:-1.6em; font-size:0.55em; text-align:left'>れい</SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>波</SPAN><SPAN STYLE='position:absolute; left:0.6em; top:-1.6em; font-size:0.55em; text-align:left'>は</SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>光</SPAN><SPAN STYLE='position:absolute; left:0.1em; top:-1.6em; font-size:0.55em; text-align:left'>こう</SPAN>" + "<SPAN STYLE='position:relative'><SPAN STYLE='font-size:1.3em'>線</SPAN><SPAN STYLE='position:absolute; left:0.1em; top:-1.6em; font-size:0.55em; text-align:left'>せん</SPAN>", "なんでやねん!", "あなたは醤油派? それともソース派?", "太古の地球の様子", "古より連綿と受け継がれし匠の技", "( 上底 + 下底 ) × 高さ ÷ 2", "HCl + NaOH → NaCl + H<SPAN STYLE='font-size:70%'>2</SPAN>O", "3LDK 日当たり良好 駅より徒歩3分", "時給1000円 9:00〜20:00の間 週3〜4日", "レベル 3 ライフ 3200 スコア 23700", "人類滅亡の時まで、あと291日", "使用上の注意をよく読み、用法・用量を守って正しくお使い下さい。", "この物語はフィクションであり、登場する人物・団体等の名称はすべて架空のものです。", "冬はつとめて。雪の降りたるはいふべきにもあらず。", "巧言令色鮮矣仁 剛毅木訥近矣仁" ]; elem_file = document.getElementById("file"); elem_play = document.getElementById("play"); elem_base = document.getElementById("base"); elem_vid = document.getElementById("vid"); elem_txt = document.getElementById("txt"); elem_vid.addEventListener("canplay", vid_canplay, false); elem_vid.addEventListener("play", vid_play, false); elem_vid.addEventListener("pause", vid_pause, false); elem_vid.addEventListener("ended", vid_ended, false); elem_vid.addEventListener("error", vid_error, false); playing = false; url_cre = false; to_id = 0; // ページを再ロードしたときのため document.forms[0].reset(); elem_file.disabled = false; elem_play.disabled = true; //--> </SCRIPT> </BODY> </HTML> |