LoginSignup
0
0

部活(スポーツの試合)の動画に対し、得点表示を足すのに、字幕機能を使う。字幕用のテキストファイルを作るC#のプログラムを作った。

Last updated at Posted at 2023-06-03

説明

部活(スポーツの試合)の動画だが、得点表示がないとわかりにくい。

得点表示のために動画編集ソフトで編集するのは、たいそうめんどくさい。

(Youtubeなどでも対応している)字幕機能を使うのがよいのではないか、というアイデア。

その、字幕用のテキストファイルを作るC#のプログラムを作った。

自動で作成されるわけではなく、動画を見ながら、リアルタイムで手入力するので、その点のめんどくささが、劇的に減るっているわけではない。

一発撮りなので、間違うとやり直す羽目になる。(所詮テキストファイルなので、部分修正してもよいが、時間も、得点も累積なので、一か所の修正が、その後全体に影響があるので、やり直した方が早い、というレベル。)

コンパイル

image.png

c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:exe TokutenJimakuMaker.cs

実行

引数は、2つで、対戦の2名称を与えてやる。〇〇校 ●●校 みたいに

> TokutenJimakuMaker.exe 紅組 白組 

はじまると、直ちに、時間計測がはじまるので、動画再生と同時に、実行する必要がある。

使うキーは、「1」「2」のみ。1で左側、2で右側に点が入っていく。
image.png

同階層に

Out_Jimaku.vtt

という、字幕ファイルが出来るので、それを、動画に取り込めばよい

image.png

TokutenJimakuMaker.cs

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

なら、以下の字幕機能で追加すればよい

image.png

出来上がり

image.png

蛇足

ちなみに、これ、
ChatGPTに指示出したら、9割ぐらい希望通りのソースを書き出したてくれたので、それを加工した。
便利な世の中である。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0