Here's my Submission for the Tools and Utilities category:
Sega Saturn FILM Muxer
Remuxes Sega Saturn FILM files from Audio and Video sources - GitHub - TrekkiesUnite118/SegaSaturnFilmMuxer: Remuxes Sega Saturn FILM files from Audio and Video sources
This is a tool I've made to try and make dealing with FMVs in translation projects a little less painful. The key thing it does is take the Audio from one Cinepak file, and combine it with the Video Stream from another Cinepak file. This can be useful if you want to say replace the audio in a Japanese FMV with dub audio without degrading the video quality of the original Japanese video. The other key thing it can do is work with ADX Audio Cinepak files. So if your game uses ADX Audio Cinepak files and you want to subtitle them, this tool can take the ADX Audio from the original Japanese file, and combine it with the subtitled Video Stream of your new subtitled video.
I have currently only tested it with ADX audio files, but it should work with uncompressed PCM files as well.
The key requirements for it to work are the following:
- Both files video streams must have the exact same amount of frames and match in resolution and frame rate.
- Both files audio streams must have the same length and specifications (8-bit/16-bit, Mono/Stereo, Sample Rate, etc.). Audio Compression however does not matter.
- Being written in Java, a Java Runtime Environment is required to run it. It should work with Java 8 or higher.
So what it's basically doing is taking the Audio data from one file, and the video data from another file, and combining them and reconstructing the STAB chunk data correctly.
The one obvious caveat here is that you need to be able to encode your videos by following the stickied Cinepak Encoding guide. For ADX audio the key caveat is you need a source file that already has ADX audio. This can work if you want to preserve an original FMV's ADX audio, but unfortunately there isn't a way to add new ADX audio yet. I'd like to add this in the future, but I just haven't had the time to look into how this kind of audio was originally broken up into it's STAB chunks.
How to use it
- Encode your new video as you normally would following the Sega Saturn Cinepak Encoding process making sure to adhear to the requirements listed above.
- If you want to preserve the original video but replace the audio, encode a copy of the source video with your new audio swapped in.
- If you want to preserve the original audio, encode your modified video with uncompressed PCM audio that matches the specifications of the original source video.
- Run the tool and select the source FILM file for your audio, the source FILM file for your video, and the output directory.
- Click the "Mux Audio and Video" button.
Your new file will be in the specified output directory with the naming convention "NEW_<Name_of_Source_Audio_File>".
Why not use FFMPEG?
While FFMPEG does technically support Sega FILM files, it does not generate the STAB chunk correctly. While some games may be lenient and still play these files, they may present issues (Video glitches, Cracks and Pops in audio, other errors, etc.). Other games may instead just flat out refuse to play these files or crash completely. A good example of this is Sakura Wars 2. When doing research on various different ADX Cinepak files, this was a game I found that flat out would not play any file I threw at it that used ADX audio that FFMPEG created.
This tool will instead generate a correct file with a compliant STAB chunk that any game should be able to play. To show that it works, here is a test I did taking the Disc 2 intro for Sakura Wars 2, and adding subtitles that I did for the first game and patching it into Disc 1:
Eventually I'd like to expand this tool to be a complete replacement for MovieToSaturn and eliminate the need for a classic MacOS environment, but I haven't had the time to really dive into that rabbit hole yet.
Now supports using an ADX file as your source audio. This only works if your destination file also uses ADX Audio.