Skip to content

0n1cOn3/Nintendo-3DS-Video-Converter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Nintendo 3DS Video Converter

3DS CFW Video Toolkit — Convert videos for Nintendo 3DS (o3DS/n3DS) with optimized settings for hardware playback.

Features

  • MP4 (H.264) Transcoding: Optimized for both Old 3DS (o3DS) and New 3DS (n3DS) hardware
    • n3DS: Hardware H.264 decode via MVD - supports up to 854x480@30fps
    • o3DS: Software decode - optimized for 256x144@24fps
  • AVI Camera Format: Generate MJPEG/IMA-ADPCM AVI files compatible with 3DS Camera app
  • Optional CIA Generation: Support for VidInjector9000-cli integration
  • MoFlex Package Support: Note - SDK includes no MoFlex encoder, package-only support

Requirements

Required

  • ffmpeg - Video transcoding
  • ffprobe - Video analysis

Optional

  • qrencode - QR code generation
  • VidInjector9000-cli - CIA file generation from videos

Installation

  1. Clone this repository:
git clone https://github.com/0n1cOn3/Nintendo-3DS-Video-Converter.git
cd Nintendo-3DS-Video-Converter
  1. Ensure dependencies are installed:
# On Ubuntu/Debian
sudo apt-get install ffmpeg

# On macOS
brew install ffmpeg

# On Windows (via Chocolatey)
choco install ffmpeg

Usage

Basic Syntax

./3ds_transcode.sh --target <n3ds|o3ds> -i <input_file> [options]

Options

Option Description Required
--target <n3ds|o3ds> Target 3DS model (n3ds or o3ds) Yes
-i <input_file> Input video file Yes
-o <output_dir> Output directory (default: ./out) No
--avi-camera Generate AVI file for 3DS camera app No
--avi-quality <1-5> AVI quality level (default: 3, lower=better quality) No

Examples

Convert video for New 3DS:

./3ds_transcode.sh --target n3ds -i video.mkv

Convert video for Old 3DS:

./3ds_transcode.sh --target o3ds -i video.mp4

Convert for Old 3DS with camera AVI:

./3ds_transcode.sh --target o3ds -i video.mp4 --avi-camera

Custom output directory:

./3ds_transcode.sh --target n3ds -i video.avi -o /path/to/output

High quality AVI for camera:

./3ds_transcode.sh --target o3ds -i video.mp4 --avi-camera --avi-quality 2

Default Settings

New 3DS (n3DS)

  • Resolution: 854x480
  • Frame Rate: 30 fps
  • Video Codec: H.264 (Baseline profile, Level 3.1)
  • Video Bitrate: 1200 kbps
  • Audio Codec: AAC
  • Audio Bitrate: 128 kbps
  • Audio Sample Rate: 44.1 kHz

Old 3DS (o3DS)

  • Resolution: 256x144
  • Frame Rate: 24 fps
  • Video Codec: H.264 (Baseline profile, Level 3.0)
  • Video Bitrate: 500 kbps
  • Audio Codec: AAC
  • Audio Bitrate: 96 kbps
  • Audio Sample Rate: 32 kHz

AVI Camera Format

  • Resolution: 480x240
  • Video Codec: MJPEG
  • Quality: 2-5 (default: 3, lower=better)
  • Audio Codec: IMA-ADPCM
  • Audio Sample Rate: 32 kHz
  • Audio Channels: Mono
  • Maximum Duration: 10 minutes

SD Card Placement

MP4 Files

MP4 files can be placed anywhere on your 3DS SD card. Use a video player app (like mplayer_3ds) to play them.

AVI Files for Camera

AVI files must be placed in the /DCIM/ folder with the naming format HNI_XXXX.AVI to appear in the Camera app. The script automatically generates files with this naming convention.

Example:

/DCIM/HNI_20231215_143022.AVI

Technical Details

Hardware Capabilities

New 3DS (n3DS):

  • Uses MVD (Multi-Video Decoder) hardware acceleration for H.264
  • Can handle up to 854x480@30fps smoothly
  • Better battery life during video playback due to hardware decode

Old 3DS (o3DS):

  • Software H.264 decoding only
  • Limited to lower resolutions and frame rates
  • Settings optimized to prevent frame drops and ensure smooth playback

Video Encoding

All videos are encoded with:

  • H.264 Baseline Profile: Maximum compatibility
  • Proper Level: 3.1 for n3DS, 3.0 for o3DS
  • Fast Start: movflags +faststart for immediate playback
  • Aspect Ratio Preservation: Black padding added if needed
  • Buffer Management: Bitrate controls to prevent buffer overflow

MoFlex Support

The Nintendo SDK does not include a MoFlex encoder, only package support for existing .moflex files. This tool focuses on standard video formats that can be created without proprietary encoding tools.

Troubleshooting

Video Won't Play on 3DS

  1. Check file format: Ensure it's MP4 with H.264 video and AAC audio
  2. Verify resolution: Make sure you used the correct target (n3ds/o3ds)
  3. File location: MP4 files can be anywhere; AVI files must be in /DCIM/
  4. Player compatibility: Try different video player apps

AVI Not Showing in Camera

  1. Correct naming: File must start with HNI_ and end with .AVI
  2. Location: Must be in /DCIM/ folder
  3. Duration: Maximum 10 minutes
  4. Format: Must be MJPEG/IMA-ADPCM (automatic with --avi-camera)

Encoding Errors

  1. Check ffmpeg: Ensure ffmpeg is installed and in PATH
  2. Input file: Verify the input file is not corrupted
  3. Disk space: Ensure sufficient space in output directory
  4. Permissions: Check write permissions for output directory

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.

Credits

  • Video conversion powered by FFmpeg
  • Designed for Nintendo 3DS CFW (Custom Firmware) systems
  • Compatible with homebrew video players

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Disclaimer

This tool is designed for use with homebrew and custom firmware on Nintendo 3DS systems. Ensure you comply with all applicable laws and Nintendo's terms of service in your jurisdiction.

About

Convert videos for Nintendo 3DS (o3DS/n3DS) with optimized settings for hardware playback.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages