On fansubbing

Because reviewing is lame.

Instead of writing more boring reviews no one cares about (since I never have time to write them around when ep 2 airs) I’m going to talk about fansubbing instead. More important, how I fansub, since I believe how I do it is unique. In most groups, the translator, editor, timer, typesetter, encoder (and QC if there is one) are probably all different people. It’s possible there is even multiple people at some of those positions. And because of this, these tasks generally take place sequentially, though some of the faster groups figured out how to edit, time and typeset while a show is being translated.

The way I do it is quite different, since for a lot of shows I fill every role (except translator). And since every show I’m editing sans one (which is delayed for different reasons and not really relevant) is a CR edit, I have to wait for the show to air on CR. Since I also use CR’s video for most of them too, we can start from there. Generally, timing and typesetting can’t start until the encode is finished. Because I’m poor/a cheap bastard, the server I use to encode is pretty damn slow and takes 2-3 hours to encode a single episode. I found myself with a problem: what should I do during these 2 or 3 hours instead of just sitting around? At first, I figured I could just edit while watching CR’s video, and it’s true, I could do this and save some time. However, I found a better solution. I realized that I could load an Avisynth script in Aegisub that’s nearly the same as the one I used to encode and not only did it not lag, it easily played back at full speed.

FFVideoSource("[HorribleSubs] Gin no Saji - 06 [1080p].mkv")
AssumeFPS(24000,1001)
Spline36Resize(1280,720)

For example, I made this for Silver Spoon. Now, it doesn’t have debanding or any other filters, but the output has the same exact frames and it’s the same resolution as the encode. I loaded this Avisynth script and the audio from HorribleSubs in Aegisub. However, when you do this, there are no keyframes which makes timing pretty hard. It turns it’s not a problem to just make them normally with the script shown below.

FFVideoSource("[HorribleSubs] Gin no Saji - 06 [1080p].mkv")
AssumeFPS(24000,1001)
PointResize(640,360)
SCXviD("keyframes.log")

Just run this through avs2yuv with no output, and a few minutes later you have keyframes. So now that I can nearly instantly start timing and typesetting, I’ve found a way to use up the time the encode takes anyway. So how do I actually edit, time, and typeset? Generally, what I do is first see how hard I think the typesetting will be when I check all the signs to fix the styles and clean up the script. If I think it’s easy, I will just typeset them as I get to them while timing. If I think they will be hard, I’ll probably save them until the end. As for editing, I generally try to do some editing while timing the script. At least, I fix stuff that sounds weird and doesn’t seem to depend on what’s on the screen. After I finish timing and typesetting and doing some editing, the encode is usually finished or about finished. After I download it, I mux the script with the encode to QC. QCing for me means firstly that I check to make sure any edits I made before make sense with what’s on screen. Secondly, I edit any other lines that stick out. Thirdly, I check the timing to make sure there aren’t any errors. Lastly, I make sure the signs are good (usually not as issues) and that I didn’t miss any. Checking for that is pretty important because often CR will only translate a sign the first time it shows up, but not other times even if it’s in the same exact position on screen.

After I finish all these, I remux it, add the CRC, make an xdelta, and then type in a simple command on IRC for our bot to release it.

As for non-CR shows, this doesn’t really work. Making keyframes from an already 24fps and progressive video is very fast, even if you run it through a few filters. However, trying to use the same technique on something that’s 30fps and interlaced is quite slow. Not to mention, it can run a lot slower in Aegisub. For these shows, I have no choice but to wait. Fortunately, this is pretty rare, because the other shows are generally 5 minutes or less in length, or the simulcast is late enough after the broadcast that the encode can finish before it’s out (or, back in the day, when RHE actually encoded stuff on his much better server ;_;). And this has been mostly true for the past about a year that I’ve been doing this. The best part about this is that I can release things in, say, 3 to 4 hours after it’s out instead of perhaps 6 to 8. And when I have multiple shows to work on in a day, saving this time is extremely important.

Anyway, I don’t know if anyone reading this will care much, but I had some people in Commie ask me how I do things, so I figured I’d write it out since I wanted to blog here about something.

This entry was posted by herkz.

3 thoughts on “On fansubbing

  1. Any reason for using AssumeFPS? The clip provided by FFVideoSource should already have the correct framerate.

    • For some reason, HS is not 24000/1001 FPS, and if you don’t set it to that, the output can be corrupted.

  2. Yeah, it’s definitely fast, I’ve always wondered how you did it. :O
    Thank you for your explanation, this was definitely useful (although I like reading reviews as well ^^”).

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.