>> FR | Français
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 EncodingGuide/VideoDumping 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 two encodes. The first one (Standard Definition at 480p) is uploaded to Archive.org, the second 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

Uploading to YouTube is done on YouTube itself. If you are an editor for TASVideosChannel, simply follow the following steps:
1) Switch over to TVC (Google Account profile pic -> Switch Accounts)
2) Click on Upload and drag-and-drop the YouTube encode.
3) Put in a title and, optionally, a description.
4) Click Next several times, then wait for it to be uploaded.

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

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 Archive.org

Upload the downloadable 480p encode.
Once all is done, press the Upload and Create Your Item button.

Cataloguing the submission

In order to be able to publish the movie proper, the submission needs to be catalogued. This is done as follows:
Note: Currently, Octoshock submissions need to have the framerate changed to 59.94005994005994 FPS (approx. 60000/1001 FPS), as they default to the wrong framerate upon submission. This does not affect Nymashock movies, as they usually have a cycle count attached to them.

Capture the screenshot

Note: For BizHawk using the Saturnus or Octo/Nymashock cores, you need to account for proper aspect ratio correction. Please check out this section for more details.

Publish the movie


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


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.
For a movie that starts from a save RAM, the verificiation movie needs to be added as an additional movie file. Simply edit the publication, and add the verification movie as an additional movie file, following the same naming convention as the publication movie file, adding -verif at the end of the verification movie file name. Put Verification movie as the display name and click on Add.

More detailed information

EncodingGuide/PublicationManual last edited by fsvgm777 on 1/16/2024 6:24 PM
Page History Latest diff List referrers View Source