• they/them

likes breaking electronics, fiddling with old computers, and making music
https://tommytorty10.gitlab.io/pages/


wolf-apparatus
@wolf-apparatus

captionado is the closed-caption / subtitle editor1 I've wanted since I started editing video. If you have ever tried editing - not creating from scratch, but editing - captions in a video NLE or something and gotten really mad at it because you kept having to copy-paste a couple words from one cue to the other and then adjust the timing every time you wanted to change the flow of a section, this is the tool for you, and it won't cost ya nothin' but your time.

Try it yourself on GitHub Pages, check out the code for brief docs and a video demo, or read below the cut for some navel-gazing. If you use this, go ahead and send me a bug report if it breaks or a usage report if it doesn't.


This is, I think, the first piece of software I've released publicly that I'm actually proud of. That I could call finished if I wanted to. I won't, obviously - there's a giant pile of UI nitpicks I want to tackle, I'm sure quite a few stupid bugs are going to show up as I (and hopefully you) use it more, and there are some really quite cool features I want to get in there someday as I have time and browser support. But it's the first thing that comes close to a complete product.

Now, to be clear, it was also built in about 24 hours (spread over a little less than a week) and is hardly a good example of user-interface design or TypeScript programming, to say nothing about how it treats the Video Text Track file format specification. I have an awful lot of experience making computers do what I want them to, but web frontend has never been my cup of tea. I've got TypeScript's strictness checks cranked all the way up so I'm pretty sure it won't crash crash, but it could definitely make demons fly out of your nose.

That being said, it solves a problem that I have and that I know other people have and that, as far as I can tell, nobody else has bothered solving. That's always been the point of programming for me - building tools, tools that can help real people with real problems, not like what I do at the 9-to-5 where I make tools that help corporations make money2. I hope, to anyone who uses this, that it makes your life easier.


1 technically what I use it for - and what I suspect most people will use it for - is captioning, but everyone calls any sort of "text on the video that tells you what the people talking are saying" subtitles, even though that's supposed to refer only to translations. If it's meant to substitute for the audio track, it's captions.

2 actually on the balance I think my current employer is doing good, but I don't really get to see it myself and it wouldn't need to happen if not for [gestures at economic system].


You must log in to comment.

in reply to @wolf-apparatus's post:

Huh. Don’t have time to sit down with it just yet, but I’m assuming since it’s web based it’ll play basically any video the web browser would normally play? What browser do you use it in? seems perfect for adjusting terrible machine-generated transcriptions into something usable, which is actually something I’ve been interested in doing recently, so thank you.

Edit: well you didn’t include any browser chrome in the video demo haha, but I can at least see it’s a Mac which is encouraging, and also I see you’re literally using it for Whisper-generated captions like I would be haha. I struggled through trying Aegisub for this and started getting tempted to make macros to simplify the workflow to something closer to this. :)

Standalone: no, it's a web app. I'd need to put it in electron or something

Offline: yes! Build it locally as described in the README and then the whole thing ends up in dist/. The locally-built version is completely self-contained - you can load dist/index.html in a browser without a network connection, or even copy dist/ to a different machine and use it there.

You might also be able to use your browser's "save entire page" feature (or something like it) to make a local copy of the version hosted on GitHub Pages; if you have all the JavaScript code along with it, it should work, though I haven't tested that myself.

Basically, captionado can run on any computer that has a modern web browser, regardless of whether or not that computer is connected to the Internet.

This is possible because a) web browsers can also load pages from your computer's hard drive, and b) captionado itself doesn't require Internet access to function. So, if you get the (currently four) HTML and JavaScript files that make up captionado onto your computer, plus a web browser (which presumably you already have) you can use it without an Internet connection. In fact, that's how I test the application while I'm developing it.

Since captionado is just HTML and JavaScript, it should be able to run on any operating system - the web browser you're loading it in is the OS-specific part (which is also why I don't specify an OS).

Currently, obtaining those files requires building them from source. Technically, you can also do that on any OS (npm is cross-platform), but it definitely takes some technical expertise.

Anyways, I should be able to set things up so that you can easily download an offline copy of the application. I'll check back in once I've done that.

Alright, I've set things up so that you can grab an offline copy at https://m0rg-dev.github.io/captionado/captionado.zip. Should work on anything with an up-to-date browser - extract the .zip and load up captionado\index.html and it'll be running completely from your hard drive. It's all self-contained, so you can copy it to a different machine via USB stick or something if you need to.

I'm 90% sure Windows will let you just double-click index.html to open it in your web browser. Otherwise, you may have to drag and drop it onto the browser or use the "what should I open this with" dialog - been a while since I've used Windows and that wasn't ever something I did regularly (usual macOS user, if you'll believe it).

Let me know if that works for you.