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



Set up the package

The TASVideos community has developed an all-in-one script package that does:
Every publication needs three encodes. The first 2 (Standard Definition) are uploaded to, the third one (High Definition) is for YouTube.


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:
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:
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.
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.
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:
If the rerecord count is broken, showing an unfairly low number, write "unknown".

Timing and placement

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.

LWLibavVideoSource for tricky codecs

LWLibavVideoSource is a source filter (e.g. AviSource) for AviSynth from the LSMASHSource plugin collection.

How to use

  1. Download LSMASHSource from the above link, and copy the 32- and 64- bit LSMASHSource.dll files to the appropriate plugin locations.
  2. Instead of writing AviSource("file.avi") in your AviSynth script, you would write LWLibavVideoSource("file.avi", fpsnum=60000, fpsden=1001, format="RGB24").
    • You must supply accurate values for the fpsnum and fpsden parameters, or the filter will mess up the framerate. Check the dumped video's framerate and match it. For 59.94 fps NTSC video: fpsnum=60000, fpsden=1001. For 60.099 fps SNES video: fpsnum=60099, fpsden=1000. For 60 fps video: fpsnum=60 (you can leave out fpsden and it will default to 1).
    • VirtualDub/FFmpeg/x264 don't like LWLibavVideoSource's default format, so you will always need to supply the format parameter. "RGB24" is a good default to use as it will do a lossless, fast conversion.
  3. The first time an AVS script with a call to LWLibavVideoSource gets executed, it will generated an index file for the source video with the extension .lwi.
    • If the script is loaded for the first time in VirtualDub, you will not see any progress meter and the program will simply appear to hang while the file is being generated. This could take an hour or more for 4K video!
    • You can instead run your script for the first time with ffprobe -hide_banner myscript.avs and you will get a progress indicator while the file is built.
  4. Dub the source video's audio with AudioDub( WavSource("file.avi") ) as LWLibavVideoSource does not read any audio data.


Run global.bat

After all is over, get your files in the output folder.

Prepare all files

Encode file names

If not sure about a token, investigate similar publications, how their files are named. Example:

Upload to

Upload primary downloadable and 512kb stream.
Once all is done, press the Upload and Create Your Item button.

Capture the screenshot

Publish the movie


If you have started working on some submission for publication, notify other publishers you're already encoding it:
[''''user:feos'''']: Processing...


After all files are ready, click the Publish link on the submission page.
This movie beats the [''''1000M|previous run''''] by [''''module:frames|amount=300|fps=ntsc''''] seconds
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).
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!

More detailed information

EncodingGuide/PublicationManual last edited by feos 11 days ago
Page History Latest diff List referrers View Source