Convert Sega Saturn FILM to MP4 with FFmpeg
This guide explains how to convert Sega Saturn FILM (Sega FILM/CPK) video files into modern MP4 format using the open-source multimedia tool FFmpeg. You will learn the correct FFmpeg commands to demux Saturn full-motion video (FMV), transcode legacy Cinepak video and PCM audio into standard H.264 and AAC, and troubleshoot common file detection issues.
Understanding the Sega FILM Format
Sega Saturn FMVs typically use the Sega FILM container format
(commonly found with .film, .cpk, or
.rom file extensions). Inside this container, video is
almost always encoded with the Cinepak codec, paired with raw 8-bit or
16-bit uncompressed PCM audio. FFmpeg natively supports the Sega FILM
demuxer and Cinepak decoder, eliminating the need for specialized Saturn
extraction tools.
Step 1: Install FFmpeg
Ensure FFmpeg is installed and accessible from your system's command line or terminal. You can verify your installation by running:
ffmpeg -versionStep 2: Basic Conversion Command
If your source file ends with the .film extension,
FFmpeg automatically detects the container. Run the following command in
your terminal:
ffmpeg -i input.film -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac -b:a 192k output.mp4Parameter breakdown:
-i input.film: The source Sega Saturn video file.-c:v libx264: Encodes the video stream to H.264.-crf 18: Sets a high-quality visual output suitable for preserving low-resolution retro video.-pix_fmt yuv420p: Converts the pixel format to YUV 4:2:0, ensuring the MP4 plays reliably across modern web browsers and media players.-c:a aac -b:a 192k: Converts the Saturn PCM audio to standard AAC stereo at 192 kbps.
Step 3: Forcing the Sega FILM Demuxer (For .CPK Files)
On many Saturn discs, FILM files use the .cpk extension.
This can cause FFmpeg to confuse the file with modern CRI Middleware CPK
archives. If FFmpeg fails to read your file, explicitly force the
segafilm format using the -f flag:
ffmpeg -f segafilm -i input.cpk -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac -b:a 192k output.mp4Step 4: Upscaling for Modern Displays (Optional)
Sega Saturn FMVs run at low native resolutions (often 320x224 or 320x240). To prevent modern video players from applying blurry bilinear filtering, use FFmpeg's nearest-neighbor scaling filter to upscale the video cleanly:
ffmpeg -f segafilm -i input.cpk -vf "scale=iw*4:ih*4:flags=neighbor" -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac output.mp4This scales the video by 4x while preserving the sharp, original pixelated aesthetic of the Cinepak encoding.
Batch Converting Multiple Files
Windows (PowerShell):
Get-ChildItem *.cpk | ForEach-Object {
ffmpeg -f segafilm -i $_.FullName -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac "$($_.BaseName).mp4"
}Linux / macOS (Bash):
for file in *.cpk; do
ffmpeg -f segafilm -i "$file" -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac "${file%.*}.mp4"
done