説明
部活(スポーツの試合)の動画だが、得点表示がないとわかりにくい。
得点表示のために動画編集ソフトで編集するのは、たいそうめんどくさい。
(Youtubeなどでも対応している)字幕機能を使うのがよいのではないか、というアイデア。
その、字幕用のテキストファイルを作るC#のプログラムを作った。
自動で作成されるわけではなく、動画を見ながら、リアルタイムで手入力するので、その点のめんどくささが、劇的に減るっているわけではない。
一発撮りなので、間違うとやり直す羽目になる。(所詮テキストファイルなので、部分修正してもよいが、時間も、得点も累積なので、一か所の修正が、その後全体に影響があるので、やり直した方が早い、というレベル。)
コンパイル
c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:exe TokutenJimakuMaker.cs
実行
引数は、2つで、対戦の2名称を与えてやる。〇〇校 ●●校 みたいに
> TokutenJimakuMaker.exe 紅組 白組
はじまると、直ちに、時間計測がはじまるので、動画再生と同時に、実行する必要がある。
使うキーは、「1」「2」のみ。1で左側、2で右側に点が入っていく。
同階層に
Out_Jimaku.vtt
という、字幕ファイルが出来るので、それを、動画に取り込めばよい
//c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:exe TokutenJimakuMaker.cs
using System;
using System.Diagnostics;
using System.Threading;
using System.IO;
namespace TokutenJimakuMaker
{
class Program
{
static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
string s1 = args[0]; //紅組
string s2 = args[1]; //白組
int num =1;
int v1 =0;
int v2 =0;
string preTm = "00:00:00.000";
string fn = @"./Out_Jimaku.vtt";
File.WriteAllText(fn, "WEBVTT"+Environment.NewLine+Environment.NewLine);
ConsoleKeyInfo input;
do
{
input = Console.ReadKey(true);
if (input.KeyChar == '1' || input.KeyChar == '2')
{
TimeSpan ts = stopwatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:000}",
ts.Hours, ts.Minutes, ts.Seconds,ts.Milliseconds );
string message = num + "\n" + preTm + " --> " + elapsedTime +"\n" + s1 + " " + v1 + " - " + s2 + " " + v2;
Console.WriteLine("----------------------");
Console.WriteLine(message + "\n");
File.AppendAllText(fn, message + "\n\n");
preTm = elapsedTime;
num +=1;
if(input.KeyChar == '1') {v1 +=1;}
if(input.KeyChar == '2') {v2 +=1;}
Console.WriteLine(" → " + v1 + " - " + v2 + "\n");
}
} while (input.Key != ConsoleKey.Escape);
}
}
}
二倍速
ちなみに、動画を2倍速で再生しながら、字幕をつくるなら
TimeSpan ts = stopwatch.Elapsed;
ts = ts + ts
とすれば、2倍速の字幕になる
youtube
なら、以下の字幕機能で追加すればよい
出来上がり
蛇足
ちなみに、これ、
ChatGPTに指示出したら、9割ぐらい希望通りのソースを書き出したてくれたので、それを加工した。
便利な世の中である。