<!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>
|