There's no point to that. The way to get optimal 3DS video quality is to use a sharp scaler to resize your video to 800x240 (SAR 1:2) before you encode it for use on the 3DS.
I think it is supported.Any way the "Correct Aspect Ratio" function could support 1600x480 (for supersampling) video? should be the same aspect as 800x240.
Yes.does this support playback of downloaded youtube that are h.264 240p?
thanksYes.
But on OLD3DS use 144p because the resolution is too high for OLD3DS to decode.
Yes, 800px mode is enabled. I mostly notice the artifacts when a video has a lot of red in it, almost like the resolution of the color is half rez or something no matter what scaler I've used (Nearest, Bilinear, Lanczos).
Super sampling down from resolutions higher than native makes that particular issue go away, though in recent testing it doesn't seem to make too much difference beyond that when I use good scaler.
-x264-params chroma-qp-offset=-1
Hello, is there any way to make a video work with the 3DS's 3d? I can't find anything about it.Video player for 3DS
Discord channel : https://discord.gg/MMsAXvetpR
If you want to watch youtube video on your 3ds, you can use thirdtube (developed by @windows_server_2003)
On NEW 3(2)DS, it is recommended to use patched Luma3DS for better performance.
v1.5.2
Changes
Ignore unsupported codec so that you can play supported codec only
(e.g. You can now play videos that contain unsupported subtitles/audio)
Fixed bugs
Hardware decoder won't play videos that contain B-frames smoothly has been fixed
(It means you don't have to care about B-frames when encoding to H.264 videos)
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.5.2
v1.5.1
Added features
Screen update frequency in audio only files have been increased
Performance has been improved by adding DMA
Video playback is automatically paused when runs out of buffer
(You can change threshold by changing 'Restart playback threshold' settings)
Seeking speed has been improved
Changes
Disallow sleep when only headset is connected
(allow sleep if headset is disconnected during playback)
App directory has been changed from sdmc:/Video_player/ to sdmc:/3ds/Video_player/
(App will automatically move folder)
Simplified Chinese(简体中文) translation has been updated
Enabled 'correct aspect ratio option' by default
Fixed bugs
Crashes in hw decoder in some videos have been fixed
Automatically enter full screen mode even file explorer is opened has been fixed
App will freeze if you seek after EOF has been fixed
Unable to pause/resume in tagged mp3 has been fixed
Video position won't be saved in some cases have been fixed
Glitch on video in full screen mode has been fixed
Some directories can't be entered have been fixed
Some videos won't be played at correct speed has been fixed
Frame desync in some 3D videos have been fixed
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.5.1
v1.5.0
Subtitles have been supported (*0)
Disable video, audio and subtitle have been added
Audio desync has been fixed
AV1 videos have been supported
The problem some video won't play smoothly in sw decoder has been fixed
Screen brightness adjustment function has been added (DPAD "↑" and "↓")
Other minor changes
*0 No style support, only plain text
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.5.0
v1.4.2
Unexpected touch in Nintendo's home menu has been fixed
Multi-threaded decoding stability has been fixed and it is enabled by default
Seeking stability has been fixed
Repeat, in order, random playback mode have been added
Other minor changes
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.4.2
v1.4.1
The "FSUSER_OpenFile() failed" error has been fixed
Adjusted font and button size in settings menu
Multi-threaded decoding is disabled by default because it has stability problem
Polish(Polski) translation has been added (by JustScratchCoder)
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.4.1
v1.4.0
Decoded image(raw) buffer has been added and it makes playback
much much much much better (especially on OLD3DS)
Spanish(español) translation has been added (by Cookiee)
Romanian(Română) translation has been added (by Tescu48)
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.4.0
v1.3.3
'aspect ratio 10:3 mode' has been changed to 'correct aspect ratio mode' (follow sar value(*0))
Color conversion speed has been improved
Simplified Chinese(简体中文) translation has been added (by LITTOMA)
Italian(italiano) translation has been added (by dixy52-beep)
*0 if video size is 800x240 and no sar value is set, it autmatically apply sar 1:2
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.3.3
v1.3.2
Added aspect ratio 10:3 mode (for 800x240 videos)
Added disable resize and move video mode
Added remember video pos mode (resume from that pos next time)
Other minor changes
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.3.2
v1.3.1
Volume adjustment has been added (from 0% to 999%)
Direction pad seeking has been added (from 1 second to 99 seconds)
Hungarian(magyar) translation has been added (by vargaviktor)
Other minor changes
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.3.1
v1.3.0
The video that has more than one audio tracks has been supported (Press Y key-> select audio track to select track)
Multi-threaded decoding has been supported (Press Y key-> use multi-threaded decoding to toggle)
Hardware decoder has been merged (Press Y key-> use hw decoder to toggle)
Full screen mode has been supported (Press select key to toggle)
Other minor changes
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.3.0
v1.2.0
Hardware decoding won't work in .cia has been fixed
Hardware decoding won't work in some resolution has been fixed
Added hardware color conversion for software decoder
Added 3D video support(*)
Other minor changes and optimization
* New 3DS or 3DS only, software decoder only, in order to see 3D video as 3D you need to enable 3D mode in settings(settings->LCD->Screen mode->3D)
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.2.0
v1.1.1
Video will not be decoded correctly in hardware decoder has been fixed
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.1.1
v1.1.0
Added hardware decoder (β)
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.1.0
v1.0.1
Added allow skip frames option
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.0.1
v1.0.0
Initial release
Download : https://github.com/Core-2-Extreme/Video_player_for_3DS/releases/tag/v1.0.0
Source : https://github.com/Core-2-Extreme/Video_player_for_3DS
View attachment 255791
Features
Hardware accelerated decoding(*0)
Hardware accelerated color conversion
Multiple video codec support(MPEG4, H.264, H.265, Motion Jpeg)
Multiple audio codec support(mp1, mp2, mp3, ac3, aac, ogg, pcm audio)
Seek
3D video(*1)
Zoom in/out video
Move video
File explorer
*0 New 3DS and New 2DS only
*1 New 3DS and 3DS only, software decoder only, in order to see 3D video as 3D
you need to enable 3D mode in settings(settings->LCD->Screen mode->3D)
How to convert your 3d video for 3DS : https://gbatemp.net/threads/release-video-player-for-3ds.586094/page-10#post-9575227 (by T0biasCZe)
Performance
Decoding speed depends on encoder option, video type, video scene, etc...
This table shows average fps, so you may hear stutter audio if you use this framerate.
(Lower video resolution or framerate in that case)
Software decoding in this table uses only one thread not multi-threaded decoding.
MPEG1video
MPEG1video test file was encoded following command :
ffmpeg -i {input_file_name} -acodec copy -vcodec mpeg1video -s {width}x{height} -r 30 -q:v 15 {output_file_name}
MPEG1video 256x144 (144p) 426x240 (240p) 640x360 (360p) 800x240 854x480 (480p) OLD3DS Software decoding 69.0fps 39.9fps 24.0fps 27.4fps 16.7fps NEW3DS Software decoding 532.0fps 267.2fps 119.8fps 158.0fps 69.4fps
MPEG2video
MPEG2video test file was encoded following command :
ffmpeg -i {input_file_name} -acodec copy -vcodec mpeg2video -s {width}x{height} -r 30 -q:v 15 {output_file_name}
MPEG2video 256x144 (144p) 426x240 (240p) 640x360 (360p) 800x240 854x480 (480p) OLD3DS Software decoding 67.1fps 37.6fps 22.3fps 26.3fps 15.4fps NEW3DS Software decoding 518.8fps 254.2fps 113.9fps 145.7fps 65.9fps
H263+
H263+ test file was encoded following command :
ffmpeg -i {input_file_name} -acodec copy -vcodec h263p -s {width}x{height} -r 30 -q:v 15 {output_file_name}
H263+ 256x144 (144p) 424x240 (240p) 640x360 (360p) 800x240 856x480 (480p) OLD3DS Software decoding 62.8fps 35.6fps 21.1fps 24.6fps 8.7fps NEW3DS Software decoding 527.9fps 257.8fps 113.1fps 144.2fps 33.9fps
H264
H264 test file was encoded following command :
ffmpeg -i {input_file_name} -acodec copy -vcodec libx264 -s {width}x{height} -r 30 -preset fast -profile:v baseline {output_file_name}
H264 256x144 (144p) 426x240 (240p) 640x360 (360p) 800x240 854x480 (480p) OLD3DS Software decoding 30.7fps 15.9fps 8.8fps 10.2fps 5.4fps NEW3DS Software decoding 226.7fps 95.1fps 43.4fps 53.2fps 25.1fps NEW3DS Hardware decoding 560.6fps 338.7fps 206.0fps 235.3fps 114.7fps
H265
H265 test file was encoded following command :
ffmpeg -i {input_file_name} -acodec copy -vcodec libx265 -s {width}x{height} -r 30 -preset fast -profile:v main {output_file_name}
H265 256x144 (144p) 426x240 (240p) 640x360 (360p) 800x240 854x480 (480p) OLD3DS Software decoding 22.4fps 11.3fps 6.2fps 7.2fps 3.9fps NEW3DS Software decoding 136.8fps 55.7fps 26.4fps 30.9fps 15.3fps
Supported video codec
Motion jpeg
MPEG4 (MPEG4 part2)
MPEG1video
MPEG2video
H.263
H.263+
H.264 (MPEG4 part10)
H.265 (HEVC)
Supported audio codec
mp1 (MPEG audio layer 1)
mp2 (MPEG audio layer 2)
mp3 (MPEG audio layer 3)
ac3
aac (Advanced audio coding)
ogg (Vorbis)
pcm audio
Controls
A : Play/Pause
B : Stop
Y : Debug
X : Select file
R : Zoom in
L : Zoom out
C/DPAD : Move video
touch the bar : Seek
Hey, i've tried running your line of code, it managed to convert the files to "3d" but for some reason, when i run the movie.avi on my o3ds and turn the 3D on, The left.mkv & right.mkv are swapped, basically the left is on the right and the right is on the left. Any help?3D conversion guide V2
i fully automated the command so you only need to change the INPUT and it will do everything else for you
if you have nvidia maxwell gpus or newer (+- GTX 960 and newer) you can use hardware acceleration version of commands to speed up the converting a lot.
replace the INPUT at the beggining with your movie file name. dont change ANYTHING else.
it will spit you out movie1.avi and movie2.avi
For videos and films longer than 1 hour and 30 minutes, use these commands:
Code:ffmpeg -i INPUT -vf scale=800:240:flags=neighbor scaled.mkv && ffmpeg -i scaled.mkv -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[r]stereo3d=sbsl:mr[right]" -map [left] -map 0:a -c:a copy left.mkv -map [right] -map 0:a -c:a copy right.mkv && mkdir 1 && mkdir 2 && ffmpeg -to 1:30:00 -i right.mkv -c:v copy -c:a copy .\1\right.mkv && ffmpeg -to 1:30:00 -i left.mkv -c:v copy -c:a copy .\1\left.mkv && ffmpeg -ss 1:30:00 -to 3:00:00 -i right.mkv -c:v copy -c:a copy .\2\right.mkv && ffmpeg -ss 1:30:00 -to 3:00:00 -i left.mkv -c:v copy -c:a copy .\2\left.mkv && ffmpeg -i .\1\left.mkv -i .\1\right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -b:v 3M -ac 2 movie1.avi && ffmpeg -i .\2\left.mkv -i .\2\right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -b:v 3M -ac 2 movie2.avi
Hardware accelerated version:
Code:ffmpeg -i INPUT -vf scale=800:240:flags=neighbor -c:v h264_nvenc -maxrate 100M -b:v 12M -minrate 6M scaled.mkv && ffmpeg -i scaled.mkv -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[r]stereo3d=sbsl:mr[right]" -map [left] -map 0:a -c:a copy -c:v h264_nvenc -maxrate 100M -b:v 12M -minrate 6M left.mkv -map [right] -map 0:a -c:a copy r-c:v h264_nvenc -maxrate 100M -b:v 12M -minrate 6M ight.mkv && mkdir 1 && mkdir 2 && ffmpeg -to 1:30:00 -i right.mkv -c:v copy -c:a copy .\1\right.mkv && ffmpeg -to 1:30:00 -i left.mkv -c:v copy -c:a copy .\1\left.mkv && ffmpeg -ss 1:30:00 -i right.mkv -c:v copy -c:a copy .\2\right.mkv && ffmpeg -ss 1:30:00 -i left.mkv -c:v copy -c:a copy .\2\left.mkv && ffmpeg -i .\1\left.mkv -i .\1\right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -b:v 3M -ac 2 movie1.avi && ffmpeg -i .\2\left.mkv -i .\2\right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -b:v 3M -ac 2 movie2.avi
if you have video shorter than 1 hour and 30 minutes use these commands
hardware accelerated version:Code:ffmpeg -i INPUT -vf scale=800:240:flags=neighbor scaled.mkv && ffmpeg -i scaled.mkv -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[r]stereo3d=sbsl:mr[right]" -map [left] -map 0:a -c:a copy left.mkv -map [right] -map 0:a -c:a copy right.mkv && ffmpeg -i left.mkv -i right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -b:v 3M -ac 2 movie.avi
Code:ffmpeg -i INPUT -vf scale=800:240:flags=neighbor -c:v h264_nvenc -maxrate 100M -b:v 12M -minrate 6M scaled.mkv && ffmpeg -i scaled.mkv -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[r]stereo3d=sbsl:mr[right]" -map [left] -map 0:a -c:a copy -c:v h264_nvenc -maxrate 100M -b:v 12M -minrate 6M left.mkv -map [right] -map 0:a -c:a copy -c:v h264_nvenc -maxrate 100M -b:v 12M -minrate 6M right.mkv && ffmpeg -i left.mkv -i right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -b:v 3M -ac 2 movie.avi
And if you wonder why it needs to be split in two, why not just lower the bitrate...
If you put the 3hour movie into the 4GB, it would look like this...
Nice JPEG ヾ(•ω•`)o
that why it needs to be split into two
if you have MacOS or Linux, you need to convert it manually
[/SPOILER]SPLITTING (skip if your movie is shorter than 1 hour and 30 minutes)
3DS uses Fat32 which has max 4GB file size. Avi needs at least 3Mb/s with the resolution that 3ds uses to look averagely good (6Mb/s with the 2 video tracks)
with that bitrate, it can fit only fit 1 hour and 30 minutes. but most movies are longer. so we need to split it. use these commands
Code:ffmpeg -to 1:30:00 -i YOURMOVIE -vf scale=852:240:flags=neighbor -c:a copy part1.mkv
Code:ffmpeg -ss 1:30:00 -i YOURMOVIE -vf scale=852:240:flags=neighbor -c:a copy part2.mkv
hardware accelerated version
Code:ffmpeg -to 1:30:00 -i YOURMOVIE -vf scale=852:240:flags=neighbor -c:a copy -c:v h264_nvenc -minrate 5M -b:v 12M -maxrate 100M part1.mkv
Code:ffmpeg -ss 1:30:00 -i YOURMOVIE -vf scale=852:240:flags=neighbor -c:a copy -c:v h264_nvenc -minrate 5M -b:v 12M -maxrate 100M part2.mkv
do the following commands to both parts of your movie
3d in video files is side by side in one video track. we first need to extract the 3D into two separate video track so we can convert it to the format that 3ds needs
select either the side by side command or top/bottom command based on your source video
side by side video:
open command prompt in the same directory as your media file, and copy the command, and change INPUT to your video files
hardware accelerated version:Code:ffmpeg -i INPUT -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[r]stereo3d=sbsl:mr[right]" -map [left] -map 0:a -c:a copy left.mkv -map [right] -map 0:a -c:a copy right.mkv
Code:ffmpeg -i INPUT -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[r]stereo3d=sbsl:mr[right]" -map [left] -map 0:a -c:a copy -c:v h264_nvenc -maxrate 100m -b:v 18m -minrate 10m left.mkv -map [right] -map 0:a -c:a copy -c:v h264_nvenc -maxrate 100m -b:v 18m -minrate 10m right.mkv
top/bottom video
We need to convert the top bottom video to side by side video
hardware accelerated version:Code:ffmpeg -i INPUT -vf stereo3d=abl:sbsl -c:a copy output.mp4
now you have side by side video. use the command in "side by side video" section to separate itCode:ffmpeg -i INPUT -vf stereo3d=abl:sbsl -c:a copy -c:v h264_nvenc -b:v 20m -maxrate 100m -minrate 10m output.mp4
now we have the separate left eye video track and right eye video track
The actual conversion
in this step, we take the left eye video and right eye video and put it into 1 file with two video tracks that the 3DS consumes
Code:ffmpeg -i left.mkv -i right.mkv -map 0:v:0 -map 0:a:0 -map 1:v:0 -vcodec mjpeg -s 426x240 -b:v 3M -ac 2 movie.avi
Copy the output file onto your SD card and play it
Cropping the leterboxing so its 16:10 and fill whole screen (OPTIONAL] (DONT DO THIS IF YOU ARE NOT WELL FAMILIAR WITH FFMPEG!)
the video will be stretched, but will fill the whole screen
first, export some frame from the left/right video. then open the frame with gimp (can be photoshop). select everything except the black borders
copy the information about the selection, and paste it into this command (replace out_x with the selection width, out_y with selection heigh, X and Y with the start position of the selection)(replace the LEFTRIGHTVIDEO with your source movie source):
follow the code in left/right video to separate the files into left right filesCode:ffmpeg -i LEFTRIGHTVIDEO -vf "crop=out_x:out_y:x:y:" crop.mp4
Well, 4 months after promising the GUI, i finally got time to do itWould people be interested in "GUI" version of the 3D convertor? And it could also convert 2D videos into the correct format? (so you dont need to duck with ffmpeg?) https://gbatemp.net/threads/release-video-player-for-3ds.586094/post-9575227
OK, its done, here is download. If you have any question about the convertor/converting the videos ask.Well, 4 months after promising the GUI, i finally got time to do it
it will be able to take input video, and convert it to standard video, hori hd video, and 3ds video, and it can take both left/right and up/down 3D videos. It can also output to mjpeg, mpeg and h264.
you can also select which downscale do you want to use, either lanczos, nearest neighbor, or "mix" (downscales to double of 3ds resolution with lanczos, and then downscales to 3ds resolution with neighbor)
In the future, i am gonna also add a wii mode, which converts videos for WiiMC
View attachment 342036
Small disadvantage is that its Windows only (since its made in C# and Windows Forms), but if someone uses linux, he propably knows how to use command line...
What command line did you use to encode your videos?i found bug in v1.5.2, when i play 24fps H264 3D video on New 3DS, the video runs at double the speed... (in vlc it runs correctly)
ffmpeg -i "C:\Users\user\Videos\Avatar2_trailer_SBS_3D.mkv" -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[left]scale=800:336:flags=lanczos[left];[left]scale=400:168:flags=neighbor[left];[r]stereo3d=sbsl:mr[right];[right]scale=800:336:flags=lanczos[right];[right]scale=400:168:flags=neighbor[right]" -map [left] -map 0:a -c:a aac -b:a 128k -b:v 2000k -c:v libx264 -bsf:v "h264_metadata=sample_aspect_ratio=1" left.mp4 -map [right] -an -b:v 2000k -c:v libx264 -bsf:v "h264_metadata=sample_aspect_ratio=1" right.mp4 && ffmpeg -i left.mp4 -i right.mp4 -map 0:v:0 -map 0:a:0 -map 1:v:0 -c:v copy -c:a copy "C:\Users\user\Videos\3ds_Avatar2_trailer_SBS_3D.mkv.mp4"
ffmpeg -i "C:\Users\user\Videos\Avatar2_trailer_SBS_3D.mkv" -filter_complex "split[l][r];[l]stereo3d=sbsl:ml[left];[left]scale=800:336:flags=lanczos[left];[left]scale=400:168:flags=neighbor[left];[r]stereo3d=sbsl:mr[right];[right]scale=800:336:flags=lanczos[right];[right]scale=400:168:flags=neighbor[right]" -map [left] -map 0:a -c:a aac -b:a 128k -b:v 2000k -c:v mjpeg -huffman optimal left.mp4 -map [right] -an -b:v 2000k -c:v mjpeg -huffman optimal right.mp4 && ffmpeg -i left.mp4 -i right.mp4 -map 0:v:0 -map 0:a:0 -map 1:v:0 -c:v copy -c:a copy "C:\Users\user\Videos\3ds_Avatar2_trailer_SBS_3D.mkv.mp4"