Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ThirdTube 3DS

From GameBrew
Revision as of 08:22, 26 September 2021 by HydeWing (talk | contribs)

Template:Infobox-3DS-Homebrews

ThirdTube

A work-in-progress homebrew YouTube client for the new 3DS!

Instability Warning

As this app is still in the alpha stage, you may and will encounter crashes and other bugs. If you find one of those, it would be helpful to open an issue on this GitHub repository.

Description

It accesses the mobile version of YouTube, parses the important part of the downloaded html and plays the stream using the decoder taken from Video player for 3DS by Core-2-Extreme. It does not run any javascripts or render html/css, so it’s significantly faster than YouTube on the browser. The name is derived from the fact that it is the third YouTube client on 3DS, following the official YouTube app (discontinued) and the new 3DS browser.

Screenshots

ThirdTube-3DS-01.jpg ThirdTube-3DS-02.jpg ThirdTube-3DS-03.jpg ThirdTube-3DS-04.jpg

Features

  • 360p Video Playback 480p might be possible and could be considered in the future development
  • Searching
  • Video suggestion
  • Comments
  • No ads As this app web-scrapes YouTube, it’s more like “”Ads are not implemented“” rather than “”We have ad-blocking functionality“”. Of course, I will never “”implement“” it :)

Controls

Currently, most of the controls are done by touching. You can always use B button to go back to the previous scene. Using the hamburger menu at the right bottom, you can jump to the Search, Settings, or About scene or exit the app.

Requirements

A New 3DS (including a new 2DS) with Luma3DS installed and DSP1 run. I haven’t tested the minimum system version, but at least 8.1.0-0 is needed.

Known issues

  • Extracted stream urls randomly return 403 and the video playback fails The reason is unknown, but a temporary workaround is to press Advanced Tab -> Reload when this happens.
  • Stream downloading randomly slows down (about 10% of the times) This is due to YouTube (probably deliberately) throttling the download speed. The workaround is the same as the 403 issue; reloading will fix it. Reference : https://github.com/ytdl-org/youtube-dl/issues/29326 It looks like the devs on youtube-dl found the solution, and I’m looking into it.
  • Long comments are cut This is intentionally done for a performance reason and probably fixable by, for example, folding the comments by default.

Issues that won’t be fixed

  • Old 3DS support I’m one who is obsessed about the support of “”legacy“” devices, but it turned out that old 3DS, without a hardware-decoding capability, cannot even play 144p at a constant 30 FPS. I regret to say that I have no plan to support the old 3DS.

FAQs

  • Does it make sense? The worst question in the console homebrew scene. Isn’t it just exciting to see your favorite videos playing on a 3DS?

License

You can use the code under the terms of the GNU General Public License GPL v3 or under the terms of any later revisions of the GPL. Refer to the provided LICENSE file for further information.

Third-part licenses

FFmpeg

by the FFmpeg developers under GNU Lesser General Public License (LGPL) version 2.1 The source code can be found in library/FFmpeg/FFmpeg. ### json11 by Dropbox under MIT License ### libctru by devkitPro under zlib License ### stb by Sean Barrett under MIT License and Public Domain

Credits

  • Core 2 Extreme For Video player for 3DS which this app is based on. Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
  • dixy52-beep For in-app textures
  • PokéTube For the icon and the banner
  • The contributors of youtube-dl As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
  • The contributors of pytube As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.

Advertising: