Downloading FMA:B Dubtitles
I'm trying to watch Fullmetal Alchemist: Brotherhood with a friend. Due to the way we watch TV remotely together (without headphones), we try to keep our TVs turned down, and despite this there is quite a bit of noise bleed (I can hear his TV coming through my phone, and I assume he can hear mine). It makes it hard to hear, so I'd like to turn on subtitles.
The problem, however, is that we want to watch the dub of the anime, and the subtitles were written to be watched with the Japanese audio (they do not even closely match the localized English dialogue).
My dream is to be able to watch the show, with the dubbed English voice acting, and then have subtitles which match the dub (sometimes called dubtitles) visible as well.
The problem is that apparently nobody cares about dubtitles. I did a few Google searches and all of the Reddit questions about this are replied to derisively ("why do you want subtitles if they're speaking in English"? Because I CAN'T HEAR, OBVIOUSLY).
I happen to know that Crunchyroll offers a dub of Fullmetal Alchemist: Brotherhood, and their dubs come with 'closed captioning' which includes subtitles matching the dub as it is spoken in English. I am a paying customer for Crunchyroll but I don't actually want to watch it there. I guess I want to prove that my Jellyfin server can be just as good of an experience? There's also the fact that the closed captioning seems to break every time we finish an episode.
I had a bit of a breakthrough today: I opened my 'network' tab in Firefox's Developer Tools, clicked on episode 1 of Fullmetal Alchemist: Brotherhood with the closed captioning enabled, and then filtered the network requests for 'vtt'. I found exactly one API request which matched. I copied it as a Powershell expression and am pasting it here for posterity:
Invoke-WebRequest -OutFile E05.vtt -UseBasicParsing -Uri "https://v.vrv.co/evs3/73b7a79663826a2c15eab7106aae19d9/assets/n27yss80xy2tdjz_776.txt/sub-f1.vtt?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cCo6Ly92LnZydi5jby9ldnMzLzczYjdhNzk2NjM4MjZhMmMxNWVhYjcxMDZhYWUxOWQ5L2Fzc2V0cy9uMjd5c3M4MHh5MnRkanpfNzc2LnR4dC9zdWItZjEudnR0IiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNjc3NTU4NzIxfX19XX0_&Signature=kSZ92l2GOZpl59LsipyxAxGUfVbhIjk3c578FQgYk4b~ms8fCeB9hY3~4UposfIrb1U8-6o6Fh~NthVhXsgE5ymR3ABZbMgFIOPUAy2zSnOfc24adjIwVSYs4ArSSCiCe1CNSpJRwJN9UV9OkCk~cw5zrfMCHzUzS31vSTC2ZlOKPXD29xpcKY6efHI~1Ww1iX9WDoDf61hwuig0JaHL-dEIavbdXHWhrY3p7zfOUF0M0DNhrfLMFcn6goGfKWn1HUexGh74uQDjv8gU-jnv9BaWxvU4T441LzeDtc2-j0KzaL7ZF1G7Dj7NG9vcy0hGKJ9Xt5Qu5uZ5ndMX6vjoVg__&Key-Pair-Id=APKAJMWSQ5S7ZB3MF5VA"
Sadly, it looks like the request is sent to some sort of CDN or media bucket,
and the path is not clearly related to the content (who knows? Maybe
f36509cd02d18628d24f62d51b632f85
is an internal identifier which represents
Fullmetal Alchemist: Brotherhood?), so it'll be hard or maybe impossible for
me to write a script to downlod all 60 something subtitle files automatically.
That might be okay? We usually only watch 3 episodes at a time together.
Anyways, the file that is downloaded as a result of this looks something like this:
WEBVTT
STYLE
::cue(Default) {
color: #ffffffff;
font-family: "Arial", sans-serif;
font-size: 020px;
text-shadow: #000000ff -2px 0px 2px, #000000ff 0px 2px 2px, #000000ff 0px -2px 2px, #000000ff 2px 0px 2px;
background-color: #00000000;
}
c0000000
00:00:10.900 --> 00:00:13.940 size:040% line:12 align:center
<Default><b>[Roy] The Freezing Alchemist?
Really. He's here?</b></Default>
c0000001
00:00:13.940 --> 00:00:15.610 size:040% line:12 align:center
<Default><b>[Bradley] We have information
that he managed to slip</b></Default>
Interesting. So this 'WEBVTT' format contains a CSS-like style manifest, and then the text (with some styling, I guess)? which should appear at certain times in the video. Makes sense.
However, I tried to add this file to Jellyfin, and though the file does show up, it doesn't appear to show anything when it is selected as the subtitle track to use. I did some googling and it looks like VTT and MKV are supported together by Jellyfin, so this is unexpected..
I tried adding the .vtt
file to VLC Player, to see if watching locally would work, and
the subtitles do show up, but they are a light blue color, very small, and appear near
the left center of the screen.
I already have ffmpeg
installed on this computer for yt-dlp
purposes.. it sounds like there
is a way to use ffmpeg to convert .vtt
files to .srt
files. I tried a command like this:
.\ffmpeg.exe -i sub-f1.vtt -c:s subrip E01.srt
Which resulted in..
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
Indeed, the output file E01.srt
was empty. I deleted it and decided to try something else.
There is a GitHub repo which I discovered, containing an npm package called vtt-to-srt
which
promises to do what I need. I installed it with npm install -g vtt-to-srt
and tried running it:
vtt-to-srt /\sub-f1.srt E01.srt
That appears to have done it. Now, the E01.srt file looks something like this:
c0000000
00:00:10,900 --> 00:00:13,940 size:040% line:12 align:center
[Roy] The Freezing Alchemist?
Really. He's here?</Default>
c0000001
00:00:13,940 --> 00:00:15,610 size:040% line:12 align:center
[Bradley] We have information
that he managed to slip</Default>
c0000002
I have no perspective or context but this.. looks correct...? Unfortunately, adding the produced
E01.srt
file to VLC Player when playing episode 1 results in no subtitles being shown.
Geez! I can't catch a break! I'll try to revisit this later.
Update: 2023-02-25
Woohoo! So, I don't know why I can't convert the files with ffmpeg.exe, but Subtitle Edit does the trick! Using this command:
SubtitleEdit /convert E02.vtt srt
We get a file that works in VLC and Jellyfin! Woohoo!
So, I sat down, ready to copy and paste a bunch of .VTT file URLs, script their download and then eventually conversion and upload to Jellyfin, when I noticed that I wasn't seeing a .VTT file for Episode 6. It turns out that Crunchyroll is missing subtitles for episode 6. And 8. And 12. And so on.
What a disappointment. I guess Crunchyroll or VRV (after all, the hostname that the VTT files come from is VRV) must have had to commission someone to do the subtitles for this dub? I will say that the quality is not exactly what I would call "professional" (the subtitle editor chose to include closed captioning for the train that appears by writing "choo choo", which, to me, exhibits a sense of humor that I would have expected from a fan translation).
- ← Previous
Adventures in Animation Retargeting