Tool-assisted game movies
When human skills are just not enough

Encoding Guide / Publication Manual

>> FR | Fran├žais

<< Encoding Guide

Table of contents [expand all] [collapse all]

This page is dedicated to teaching the publication process, including official encoding aspects and publishing tips. If you just want to make a casual encode of a movie, visit Custom Encoding.

If you are a Publisher or an Encoder, subscribe to this thread to get updated about changes in the workflow.

Capturing lossless AVI

Dump the video

First of all, you need to dump lossless video from the emulator. Use a lossless codec that works with VideoForWindows. CamStudio and Lagarith are the best choices. The size of the lossless dump does not affect the resulting video encode size, so aim for dumping speed while choosing your codec and settings. Still use some compression to avoid 2GB+ files, which are hard to preview (some emulators allows splitting at that mark).


Emulator settings

See Encoding Guide / Video Dumping page for how to set up emulators to capture AVI.

Codec settings

  • Check the GZIP radiobutton
  • Select the desired compression Level (start from Level 5, that leaves room for speeding up the emulator)


  • Check Enable Null Frames
  • Check Use Multithreading
  • Select Mode: RGB (Default)


Set up the package

The TASVideos community has developed an all-in-one script package that does:

  • audio encoding
  • video encoding
  • audio and video muxing
  • YouTube stream uploading

Every publication needs three encodes. The first 2 (Standard Definition) are uploaded to Archive.org, the third one (High Definition) is for YouTube.

  • Primary downloadable (10bit444)
  • 512kb stream, secondary downloadable (8bit420)
  • HD stream


Your files

Extract the encoding package to any folder, put the AVI you dumped in the root package folder, name it movie.avi.

Since you will encode in several resolutions, and intended aspect ratio can change drastically between systems, the script is configured to use several files for a logo:

  • logo.png - standard definition
  • hdlogo.png - high definition
  • logonds.png - standard definition for NDS
  • logohdnds.png - high definition for NDS
  • logoGrey.png - high definition for VirtualBoy
You might never need some of them, but it's required to use at least the first two, to prevent great loss in picture quality to resizing.

YouTube upload


This is triggered automatically once the HD encode is done (see below), but you need to edit *\programs\credentials.txt first. Use your forum name as a username, and the password can be obtained here: https://encoders.tasvideos.org/transform.html

First it is uploaded to TASVideos server, using your identity, then every 45th minute sideloading is triggered, which means the file gets uploaded to YouTube.

  • Never stop unfinished uploads! They keep occupying the site's temporary storage until you finish them, and if you don't, it has to be manually killed by admins each time.

The site allocates space for the entire file you're uploading, it remains reserved until you finish! If you notice that you're uploading wrong encode, just let it finish, so it could get sideloaded to youtube and removed from the temp storage. Then upload the fixed encode.

Adjust the AviSynth script

Open encode.avs in Notepad++, it's a text file, so you can edit it. Make sure to keep the AVS script, the BAT script, logo and movie files in the same folder. All other dependencies lie in specific folders of the package.

Preview is done by drag'n'dropping the AVS script into VirtualDub window, to pick frame numbers from the encode and to adjust the subtitles (and also to check if all is working as you wish). Each time you edit the script, save it in Notepad++ and press F2 in VirtualDub to reload the updated source file.

Multiple segments

If the dump is too huge, you will get several AVI files split near 2GB. If there are only few of them, you can import them as a single command:

AVISource("movie.avi", "movie_02.avi")

But if the amount of segments is big, it's not useful to do the above. For that, we have the AppendSegment() function. Here's a post describing how to use it.

Movie length

As you preview your encode in VirtualDub, navigate to the movie ending. The idea is to present all contents of the game in the encode, but keep it as small as possible.

  • If the game restarts, select the frame right before restart
  • If the music stops playing at some point, where nothing new is shown visually, pick the frame when it stops playing.
  • If the music loops, and the picture does not change, find the frame when the first full loop ends

Copy the framenumber and paste it as the "trimframe" value. The script assumes you are using the preview to figure out the trimframe, and automatically subtracts the logo length.


Movie info

Go to the submission page and copy/paste into the corresponding script strings:

  • The game name
  • The branch name, if applicable (paste inside 'such quotes', so that the result looks like that "'branch'")
  • The Author's name
  • The completion time
  • The rerecord count
If the rerecord count is broken, showing an unfairly low number, write "unknown".

  • Always double-check the game names put into submissions. Always apply our standards to them.

Timing and placement

  • subFF is the first frame for subtitles. Use the first frame of the first level for that.
  • subYpos is how many pixels to shift the subtitles down by. Use 0 to have them on top, other positions must be figured out at previews.
  • subAlign gives the alignment relative to xpos (which is automated depending on align you use). 8 aligns to the center, 7 - to the left, 9 - to the right.
  • subXoffs is used when you need to push the subtitles away from the screen edge. Leave 0 if you align at the center.
  • subFont is the font face to use for SD encodes. Available fonts are in the "fonts" folder.
  • subFF2delay and subFF2delay2 are used when you need to have a delay between subtitle entries
  • bighaloCutoff refers to the smallest side of your video that will enable ng_bighalo subtitles instead of fraasub for SD encodes.
    • This is useful when you're doing upscaled HQ encodes at resolutions higher than native.
    • This also allows to prevent subtitle font distortion that happens when aspect ratio correction changes the aspect ratio heavily

  • Always make sure that your subtitles don't cover any important in-game elements, action, overscan area or internal game borders (avoiding screen transitions is also a good habit). Adjust the timing and position if you have to. If unsure, ask in tasvideos chats (IRC or Discord), or send a private message to a Senior Publisher.

  • If you're doing an encode for a TV based console, and the dump resolution is not 4:3 (or 16:9 for LCD), preview your subtitles with pass = 2 as well. Pass 2 disables aspect ratio correction in the AVISynth script, so you will see the picture at the resolution of your AVI dump. If the subtitles don't fit into the screen, or cover important elements, readjust them further.

The default AVISynth subtitles font is not used, because it looks bad at both low and high resolutions. Instead, we use the bitmap pixel fonts for SD encodes and the BigHalo function for HD.

Run global.bat

  • Aspect ratio options
    • If you encode for a handheld console, type 1
    • If your console is intended for use with a CRT TV, type 2
    • If your console is intended for use with an LCD TV, type 3
    • If you're encoding for a game that needs other aspect ratio (like multi-screen arcades), type 4 to enter the specific aspect ratio
  • What encode do you want to do
    • Encode all in one flow (4) or choose a single method. Be ready to wait several hours for each encode.
    • Type 5 for encodes that will be upscaled to multiples of the native resolution
After all is over, get your files in the output folder.

Prepare all files

Encode file names


  • The game name should be concise, use common abbreviations (smb for Super Mario Bros.) and precedent when possible (chipdale instead of chipndale). Required.
  • Add the region letter (j or e) if it is not USA (if USA version exists at all). Optional.
  • Use -tas if it's a speedrun, otherwise use -playaround. Required.
  • If it's not the first version of that game by the same author, add v2 (or any other appropriate number), otherwise avoid. Optional.
  • Add the branch name only if it is not default. Note: when setting percentage, use p instead of %. Optional.
  • Separate multiple authors names with a comma (,) or an underscore (_).
  • Encode type is added for 512kb (use that as a token), primary and HD encodes don't need that.
If not sure about a token, investigate similar publications, how their files are named. Example:


Upload to Archive.org

Upload primary downloadable and 512kb stream.

  • Go to https://archive.org/upload/ and drag'n'drop the 2 files you are about to upload onto the gray area.
  • The titles, as well as the item link, will be autofilled, but they might contain _512kb, that is in the second (mp4) file's name. Remove that part from both Page Title and Page URL.
  • In the Description field, provide the submission link
  • Subject Tags: some words from the submission page title, or just tas.
  • Select a specific collection from the pop-down list, if allowed: Speed Runs.
  • You might also need to remove the additional metadata.
Once all is done, press the Upload and Create Your Item button.

Create torrents

Make torrents for primary downloadable and 512kb stream.

  • Put these files in a folder where you keep torrent downloads.
  • Create torrents for them with the names like below. Make sure you uncheck the private marker.
  • Pick the downloadable files links from your Archive.org item and paste them to Web-seeds field in the torrent creation dialog accordingly (1 encode - 1 torrent - 1 link).
  • Our tracker is http://tracker.tasvideos.org:6969/announce
  • Run the created torrents, pointing to those 2 encodes, start seeding.

Capture the screenshot

  • Drag the lossless AVI to VirtualDub
  • Find the frame that has the most intense action
  • Press Ctrl + 1 and paste in standard Paint program.
  • Save as PNG, file name can be any.
  • Drag the file onto PNGOUT.EXE

Publish the movie


If you have started working on some submission for publication, notify other publishers you're already encoding it:

  • Edit its text and set the radiobutton Set to publication underway
  • Add a comment in the text under the horizointal ruler (4 minuses) like:
[user:feos]: Processing...


After all files are ready, click the Publish link on the submission page.

  • Always double-check the game names put into submissions. Always apply our standards to them.

  • Always check if the game already exists in the Game select: dropdown list. Duplicate game entries are hard to find and very annoying to fix. But they happen if there is a mismatch in games names between your publication and the existing entry. If the existing entry is named wrongly, pick it nonetheless, and fix it later.

  • Select the tier in the Game header tab. The tier to publish to is chosen by a judge.
  • Set flags if any of them are appropriate in the Flags tab.
  • If the player entry you're publishing for exists already, pick it from the dropdown list in the third tab: Player -> Select player, otherwise the site will create a new one. For a new entry, fill in the fields appropriately, following our requirements.
  • In the Files tab, type the movie file name, taking the name of encodes, just dropping away -tas/-playaround, and putting the author in the beginning:
  • Choose screenshot and torrents from your computer. Fill the encode duration.
  • Put the direct links to downloadable encodes from the Archive.org collection into the mirror URL fields.
  • Put the YouTube HD stream link to online-watching URL field.
  • For the Description and categories tab, select the movie to be obsoleted (if it was decided by the judge), fill the description (1 paragraph about the game, 1 about how it was played in that TAS). If it obsoleted some movie, and the new time is actually shorter, the site will automatically generate a frames module and fill in the basic info. You still need to properly customize it then. Or you can calculate the frame difference yourself and manually create the module:
This movie beats the [1000M|previous run] by [module:frames|amount=300|fps=ntsc] seconds
  • If this run has commentary, add a note about it to the movie description under a ruler ----, telling the user their form, and how to access them.
  • Add categories listed by the submission author. Still, don't copy them blindly, some physics-abusing tricks do not mean it is Heavy glitch abuse, the same is with Heavy luck manipulation.

When you are sure all is done properly, click the Proceed button.

Player entry

If the player entry you're publishing for is new, you will need to update it with forum account(s) (otherwise, pick it from the list prior publishing).

  • Go to Players page
  • Search on the page for an exclamation mark (Ctrl+F) - !. It denotes the player entry without linked forum account(s).
  • Make sure it's the player(s) you've just published for (the second player may be missing, click the exclamation mark to see the movie linked to the player entry: must be the one you've just published), and click Edit.
  • The top field is the player(s)' name(s) along with nickname(s). The latter goes after each player's name, in brackets.
  • The second field is nickname(s) only. For 2 players, use &. For 3 and more, use commas and &.
  • The right panel lists available forum account names that you should select the corresponding ones from, and add them to the Selected list. The order doesn't matter.
Sometimes, the player won't specify their name in the submission, so you would need to check their their other entries, if those exist. Always make sure to be consistent with the player names!
  • When you're done, click Save.

More detailed information


Combined RSS Feed
EncodingGuide/PublicationManual last edited by Noxxa on 2021-10-16 15:28:27
Page info and history | Latest diff | List referrers | View Source