Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I stand corrected then, I've underestimated his hardware resources. I'm not expecting a reply to my query though - it was about 3 months ago.

I don't use my Powerbook for Youtube anymore but when I came across S60Tube some months ago I used it as the home page in OneWindowBrowser combined with a script to launch the video in MPlayer:

View attachment 2559309
That's awesome! Would love to see the script if it would be easy for you to share
 
In 360p? )
You are in luck!
http://williamsmobile.co.uk/yt.php is a frontend that allows us to download up to 1080p. It might also allow streaming of 1080p, but I did not test that. The source code is available if we wanted to host our own instance. It does rely on yt-dlp, so we may experience instability while they are transitioning. However, the dev is very responsive on reddit, so I suspect issues will be fixed in a timely fashion. Let me know what you think.
 
  • Like
Reactions: barracuda156
You are in luck!
http://williamsmobile.co.uk/yt.php is a frontend that allows us to download up to 1080p. It might also allow streaming of 1080p, but I did not test that. The source code is available if we wanted to host our own instance. It does rely on yt-dlp, so we may experience instability while they are transitioning. However, the dev is very responsive on reddit, so I suspect issues will be fixed in a timely fashion. Let me know what you think.

Ideally we want 1440p, since that still works on the late G5. (4k kinda works on the Quad, but becomes a pain.)
Besides, the question is whether the API is compatible with YT (prior to its very recent changes). If yes, then it can easily be adopted for usage in QMPlay2. If no, then it can be a trouble, since the module is non-trivial.
 
Ideally we want 1440p, since that still works on the late G5. (4k kinda works on the Quad, but becomes a pain.)
Besides, the question is whether the API is compatible with YT (prior to its very recent changes). If yes, then it can easily be adopted for usage in QMPlay2. If no, then it can be a trouble, since the module is non-trivial
Luckily, grabbing the video is trivial if you have the Youtube URL. curl --output wellerman.mp4 http://williamsmobile.co.uk/yt.php?url=www.youtube.com/watch?v=ypXnlWXLVGI&format=360
If QMPlay2 doesn't play nice with that, setting up some sort of external script to curl the video and play it in QMPlay2 should not be difficult.
You could try manually setting format=1440p, but since the dev is not interested in supporting that format, I feel it would be unsporting to use. I believe the dev is having an AMA if you want to ask his advice: Maybe he would be interested in supporting 1440p? Quickjs (or moz60js or other javascript environment) may still be useful for those wanting 1440p and willing to wait for it. I am not aware of any alternative youtube front-ends that support above 1080p. I don't think PPCMC does either, so hopefully this front-end will be sufficient for @alexfree to keep PPCMC functioning.
Since the source code it available, it may be worth self-hosting an instance if that can solve the 1440p problem.
 
  • Like
Reactions: alex_free
So the issue here is YouTube-DLP will soon require a JavaScript engine for many formats.

They will keep supporting a legacy back-end that doesn’t require this (the legacy api is for old safari, that’s how you can still watch YouTube on iOS 9, etc.). That gaurentees 360p streaming/downloading for some time natively on PPC.

The alternative website APIs are a good idea. My “Plan B” Hail Mary that YouTube can’t kill is similar. Essentially plan B is to host the alternative website on your own local network. Me and @z970 have also been discussing a public facing website in some capacity.

I hope that clears up some things for now.
 
So the issue here is YouTube-DLP will soon require a JavaScript engine for many formats.

To be clear, this refers to YouTube site specifically. YT-DLP supports a lot of other services, and JS is not and won’t be needed for those.

They will keep supporting a legacy back-end that doesn’t require this (the legacy api is for old safari, that’s how you can still watch YouTube on iOS 9, etc.). That gaurentees 360p streaming/downloading for some time natively on PPC.

The alternative website APIs are a good idea. My “Plan B” Hail Mary that YouTube can’t kill is similar. Essentially plan B is to host the alternative website on your own local network. Me and @z970 have also been discussing a public facing website in some capacity.

I hope that clears up some things for now.

The right thing to do is to make a PR adding QuickJS backend to YT-DLP. Their developers are open to the idea, it is just not something that they prioritize.

In the meanwhile, I have added two new ports which support YT downloading, among other things:

you-get (media downloader with minimal dependencies and basic JS support via python package, multiple website supported)

ytsurf (search, download, stream from YT): at the moment streaming did not work for me, but search and downloading works fine.
 
  • Like
Reactions: alex_free
After two days spent on this, I fixed the build of wiliwili, a client for BiliBili (youtube-like) service.
Amount of English lang content is not comparable, but there is no difficulty with music videos.

wl1.png


mpv endianness bug again shows up, so colors with SDL2 cocoa are wrong. I will try fixing that.

Screenshot 10-5-25 12.57.33 PM.png


Upd. Colors are wrong with SDL2 X11 too, and the issue is likely on mpv side or their interoperation with wiliwili code.
 
Last edited:
Could someone say if direct streaming with mpv (with YT URL) works for you?
Does not for me, though I can fetch the video with yt-dlp and then play it with mpv. But not stream:
Code:
$ mpv -v https://www.youtube.com/watch?v=G22aFf6m9yc
[cplayer] Command line options: '-v' 'https://www.youtube.com/watch?v=G22aFf6m9yc'
[cplayer] mpv v0.40.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
[cplayer]  built on Jul  7 2025 12:57:37
[cplayer] libplacebo version: v7.351.0
[cplayer] FFmpeg version: 7.1.1 (runtime 7.1.2)
[cplayer] FFmpeg library versions:
[cplayer]    libavcodec      61.19.101
[cplayer]    libavdevice     61.3.100
[cplayer]    libavfilter     10.4.100
[cplayer]    libavformat     61.7.100
[cplayer]    libavutil       59.39.100
[cplayer]    libswresample   5.3.100
[cplayer]    libswscale      8.3.100
[cplayer] Configuration: -Dandroid-media-ndk=disabled -Daudiounit=disabled -Dcaca=disabled -Dcdda=enabled -Dcoreaudio=enabled -Dcocoa=disabled -Dcplugins=enabled -Dcuda-hwaccel=disabled -Ddirect3d=disabled -Ddvbin=disabled -Ddvdnav=enabled -Degl-angle-lib=disabled -Degl-angle-win32=disabled -Degl-drm=disabled -Degl-x11=disabled -Dgl=enabled -Dgl-cocoa=disabled -Dgl-x11=disabled -Dhtml-build=disabled -Dios-gl=disabled -Djack=disabled -Djavascript=disabled -Djpeg=disabled -Dlibarchive=enabled -Dlibbluray=enabled -Dlibmpv=true -Dlua=lua5.2 -Dmanpage-build=enabled -Dopenal=disabled -Dopensles=disabled -Dpdf-build=disabled -Dpulse=disabled -Dpthread-debug=disabled -Drubberband=disabled -Dsdl2=enabled -Dsdl2-audio=enabled -Dsdl2-gamepad=disabled -Dsdl2-video=enabled -Dshaderc=disabled -Dsixel=enabled -Dswift-build=disabled -Duchardet=disabled -Dvapoursynth=disabled -Dvideotoolbox-gl=disabled -Dvulkan=disabled -Dwayland=disabled -Dx11=disabled -Dxv=disabled -Dzimg=enabled -Dzlib=enabled -Dprefix=/opt/local -Dbuildtype=release -Dwrap_mode=default --native-file=/opt/local/var/macports/build/_opt_local_ppcports_multimedia_mpv/mpv/work/meson_native.ini
[cplayer] List of enabled features: bsd-fstatfs build-date cdda coreaudio cplugins darwin dvdnav ffmpeg gl glob glob-posix gpl iconv lcms2 libarchive libass libavdevice libbluray libdl libplacebo lua5.2 mac-thread-name posix posix-shm sdl2 sdl2-audio sdl2-video sixel vector zimg zimg-st428 zlib
[cplayer] Reading config file /opt/local/etc/mpv/encoding-profiles.conf
[ifo_dvdnav] Opening /opt/local/etc/mpv/encoding-profiles.conf
[bdmv/bluray] Opening /opt/local/etc/mpv/encoding-profiles.conf
[file] Opening /opt/local/etc/mpv/encoding-profiles.conf
[cplayer] Applying profile 'default'...
[cplayer] Setting option 'v' = '' (flags = 8)
[ifo_dvdnav] Opening /opt/local/etc/mpv/input.conf
[bdmv/bluray] Opening /opt/local/etc/mpv/input.conf
[file] Opening /opt/local/etc/mpv/input.conf
[input] Parsing input config file /opt/local/etc/mpv/input.conf
[input] Input config file /opt/local/etc/mpv/input.conf parsed: 0 binds
[clipboard] Initialized vo clipboard backend.
[cplayer] Waiting for scripts...
[cplayer] Set property: user-data/osc/visibility="auto" -> 1
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[cplayer] Done loading scripts.
[cplayer] Running hook: auto_profiles/on_before_start_file
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[osd/libass] libass API version: 0x1704000
[osd/libass] libass source: tarball: 0.17.4
[osd/libass] Shaper: FriBidi 1.0.16 (SIMPLE) HarfBuzz-ng 11.2.1 (COMPLEX)
[osd/libass] Setting up fonts...
[osd/libass] Using font provider coretext
[osd/libass] Done.
[cplayer] client removed during hook handling
[cplayer] Running hook: auto_profiles/on_load
[cplayer] Failed sending hook command auto_profiles/on_load. Removing hook.
[cplayer] Running hook: ytdl_hook/on_load
[ytdl_hook] URL matches included substring ^%w+%.youtube%.com/. Trying ytdl first.
[ytdl_hook] No youtube-dl found with path yt-dlp in config directories
[ytdl_hook] Starting subprocess: [yt-dlp, --no-warnings, -J, --flat-playlist, --sub-format, ass/srt/best, --format, bestvideo+bestaudio/best, --sub-langs, all, --write-srt, --no-playlist, --, https://www.youtube.com/watch?v=G22aFf6m9yc]
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[ytdl_hook] Found youtube-dl with path yt-dlp in PATH
[cplayer] Set property: user-data/mpv/ytdl/path="yt-dlp" -> 1
[cplayer] Set property: user-data/mpv/ytdl/json-subprocess-result={"error_string":"","killed_by_us":false,"stderr":"","status":0,"stdout":""} -> 1
[ytdl_hook] status: 0
[ytdl_hook] reason: 
[ytdl_hook] stdout: 
[ytdl_hook] stderr: 
[ytdl_hook] 
[ytdl_hook] youtube-dl failed: unexpected error occurred
[cplayer] Running hook: ytdl_hook/on_load
[ytdl_hook] playlist hook
[stream_callback] Opening https://www.youtube.com/watch?v=G22aFf6m9yc
[ffmpeg] Opening https://www.youtube.com/watch?v=G22aFf6m9yc
[ffmpeg] Mime-type: 'text/html'
[demux] Trying demuxers for level=normal.
[lavf] No format found, try lowering probescore or forcing the format.
[demux] Trying demuxers for level=unsafe.
[lavf] No format found, try lowering probescore or forcing the format.
[cplayer] Opening failed or was aborted: https://www.youtube.com/watch?v=G22aFf6m9yc
[cplayer] Running hook: ytdl_hook/on_load_fail
[ytdl_hook] URL matches included substring ^%w+%.youtube%.com/. Trying ytdl first.
[cplayer] finished playback, unrecognized file format (reason 4)
[cplayer] Failed to recognize file format.
[cplayer] Running hook: ytdl_hook/on_after_end_file
[cplayer] Exiting... (Errors when loading file)
 
Could someone say if direct streaming with mpv (with YT URL) works for you?
Does not for me, though I can fetch the video with yt-dlp and then play it with mpv. But not stream:
Code:
$ mpv -v https://www.youtube.com/watch?v=G22aFf6m9yc
[cplayer] Command line options: '-v' 'https://www.youtube.com/watch?v=G22aFf6m9yc'
[cplayer] mpv v0.40.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
[cplayer]  built on Jul  7 2025 12:57:37
[cplayer] libplacebo version: v7.351.0
[cplayer] FFmpeg version: 7.1.1 (runtime 7.1.2)
[cplayer] FFmpeg library versions:
[cplayer]    libavcodec      61.19.101
[cplayer]    libavdevice     61.3.100
[cplayer]    libavfilter     10.4.100
[cplayer]    libavformat     61.7.100
[cplayer]    libavutil       59.39.100
[cplayer]    libswresample   5.3.100
[cplayer]    libswscale      8.3.100
[cplayer] Configuration: -Dandroid-media-ndk=disabled -Daudiounit=disabled -Dcaca=disabled -Dcdda=enabled -Dcoreaudio=enabled -Dcocoa=disabled -Dcplugins=enabled -Dcuda-hwaccel=disabled -Ddirect3d=disabled -Ddvbin=disabled -Ddvdnav=enabled -Degl-angle-lib=disabled -Degl-angle-win32=disabled -Degl-drm=disabled -Degl-x11=disabled -Dgl=enabled -Dgl-cocoa=disabled -Dgl-x11=disabled -Dhtml-build=disabled -Dios-gl=disabled -Djack=disabled -Djavascript=disabled -Djpeg=disabled -Dlibarchive=enabled -Dlibbluray=enabled -Dlibmpv=true -Dlua=lua5.2 -Dmanpage-build=enabled -Dopenal=disabled -Dopensles=disabled -Dpdf-build=disabled -Dpulse=disabled -Dpthread-debug=disabled -Drubberband=disabled -Dsdl2=enabled -Dsdl2-audio=enabled -Dsdl2-gamepad=disabled -Dsdl2-video=enabled -Dshaderc=disabled -Dsixel=enabled -Dswift-build=disabled -Duchardet=disabled -Dvapoursynth=disabled -Dvideotoolbox-gl=disabled -Dvulkan=disabled -Dwayland=disabled -Dx11=disabled -Dxv=disabled -Dzimg=enabled -Dzlib=enabled -Dprefix=/opt/local -Dbuildtype=release -Dwrap_mode=default --native-file=/opt/local/var/macports/build/_opt_local_ppcports_multimedia_mpv/mpv/work/meson_native.ini
[cplayer] List of enabled features: bsd-fstatfs build-date cdda coreaudio cplugins darwin dvdnav ffmpeg gl glob glob-posix gpl iconv lcms2 libarchive libass libavdevice libbluray libdl libplacebo lua5.2 mac-thread-name posix posix-shm sdl2 sdl2-audio sdl2-video sixel vector zimg zimg-st428 zlib
[cplayer] Reading config file /opt/local/etc/mpv/encoding-profiles.conf
[ifo_dvdnav] Opening /opt/local/etc/mpv/encoding-profiles.conf
[bdmv/bluray] Opening /opt/local/etc/mpv/encoding-profiles.conf
[file] Opening /opt/local/etc/mpv/encoding-profiles.conf
[cplayer] Applying profile 'default'...
[cplayer] Setting option 'v' = '' (flags = 8)
[ifo_dvdnav] Opening /opt/local/etc/mpv/input.conf
[bdmv/bluray] Opening /opt/local/etc/mpv/input.conf
[file] Opening /opt/local/etc/mpv/input.conf
[input] Parsing input config file /opt/local/etc/mpv/input.conf
[input] Input config file /opt/local/etc/mpv/input.conf parsed: 0 binds
[clipboard] Initialized vo clipboard backend.
[cplayer] Waiting for scripts...
[cplayer] Set property: user-data/osc/visibility="auto" -> 1
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[cplayer] Done loading scripts.
[cplayer] Running hook: auto_profiles/on_before_start_file
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[osd/libass] libass API version: 0x1704000
[osd/libass] libass source: tarball: 0.17.4
[osd/libass] Shaper: FriBidi 1.0.16 (SIMPLE) HarfBuzz-ng 11.2.1 (COMPLEX)
[osd/libass] Setting up fonts...
[osd/libass] Using font provider coretext
[osd/libass] Done.
[cplayer] client removed during hook handling
[cplayer] Running hook: auto_profiles/on_load
[cplayer] Failed sending hook command auto_profiles/on_load. Removing hook.
[cplayer] Running hook: ytdl_hook/on_load
[ytdl_hook] URL matches included substring ^%w+%.youtube%.com/. Trying ytdl first.
[ytdl_hook] No youtube-dl found with path yt-dlp in config directories
[ytdl_hook] Starting subprocess: [yt-dlp, --no-warnings, -J, --flat-playlist, --sub-format, ass/srt/best, --format, bestvideo+bestaudio/best, --sub-langs, all, --write-srt, --no-playlist, --, https://www.youtube.com/watch?v=G22aFf6m9yc]
[cplayer] Set property: user-data/osc/margins={"l":0,"b":0,"r":0,"t":0} -> 1
[ytdl_hook] Found youtube-dl with path yt-dlp in PATH
[cplayer] Set property: user-data/mpv/ytdl/path="yt-dlp" -> 1
[cplayer] Set property: user-data/mpv/ytdl/json-subprocess-result={"error_string":"","killed_by_us":false,"stderr":"","status":0,"stdout":""} -> 1
[ytdl_hook] status: 0
[ytdl_hook] reason:
[ytdl_hook] stdout:
[ytdl_hook] stderr:
[ytdl_hook]
[ytdl_hook] youtube-dl failed: unexpected error occurred
[cplayer] Running hook: ytdl_hook/on_load
[ytdl_hook] playlist hook
[stream_callback] Opening https://www.youtube.com/watch?v=G22aFf6m9yc
[ffmpeg] Opening https://www.youtube.com/watch?v=G22aFf6m9yc
[ffmpeg] Mime-type: 'text/html'
[demux] Trying demuxers for level=normal.
[lavf] No format found, try lowering probescore or forcing the format.
[demux] Trying demuxers for level=unsafe.
[lavf] No format found, try lowering probescore or forcing the format.
[cplayer] Opening failed or was aborted: https://www.youtube.com/watch?v=G22aFf6m9yc
[cplayer] Running hook: ytdl_hook/on_load_fail
[ytdl_hook] URL matches included substring ^%w+%.youtube%.com/. Trying ytdl first.
[cplayer] finished playback, unrecognized file format (reason 4)
[cplayer] Failed to recognize file format.
[cplayer] Running hook: ytdl_hook/on_after_end_file
[cplayer] Exiting... (Errors when loading file)
Would be happy to test, but mpv is broken on Tiger (see log, 2nd log is without opengl variant if that matters). If it is easy to fix, I am happy to test.
 

Attachments

  • mpv.txt
    314.1 KB · Views: 6
  • mpvnogl.txt
    313.9 KB · Views: 5
Last edited:
Would be happy to test, but mpv is broken on Tiger (see log). If it is easy to fix, I am happy to test.

It is probably the same issue which hopefully has been fixed somewhere for 10.4. Anything more or less recent that uses coreaudio should have this problem. You could either grep macports repo or dig into history: at some point there was a version supporting 10.4, I guess (of coreaudio stuff, I mean, then see if it can be used with the current code).

P. S. Somewhat on a side note, don’t make a mistake which I did, and perhaps pick one video player to support on 10.4 (unless the idea is to fix something once and keep like that). If mplayer works, it is probably the easiest choice and decently good (with painless native vo).
 
Last edited:
It is probably the same issue which hopefully has been fixed somewhere for 10.4. Anything more or less recent that uses coreaudio should have this problem. You could either grep macports repo or dig into history: at some point there was a version supporting 10.4, I guess (of coreaudio stuff, I mean, then see if it can be used with the current code).

P. S. Somewhat on a side note, don’t make a mistake which I did, and perhaps pick one video player to support on 10.4 (unless the idea is to fix something once and keep like that). If mplayer works, it is probably the easiest choice and decently good (with painless native vo).
The issue doesn't seem to have ever been fixed for mpv specifically. There is a years long discussion about perhaps doing something with coreaudio in legacy support:https://trac.macports.org/ticket/71941 I am unsure if that even applies to 10.4 though.
Audio/visual appears to be where Tiger is most lacking compared to Leopard and Snow Leopard. We don't even have completely current MPlayer, though 1.3 still works. Your advice makes a lot of sense to just focus on Mplayer, my understanding is that it is one of the best for resource constrained systems (many of those running Tiger) anyway.
Sorry I didn't have a setup able to test mpv & youtube.
 
The issue doesn't seem to have ever been fixed for mpv specifically.

Those symbols which are missing are the same ones used in many other ports. See, for example: https://github.com/macos-powerpc/po...x_module_coreaudio_device.c-tiger-compat.diff

There is a years long discussion about perhaps doing something with coreaudio in legacy support:https://trac.macports.org/ticket/71941 I am unsure if that even applies to 10.4 though.
Audio/visual appears to be where Tiger is most lacking compared to Leopard and Snow Leopard.

Visual is the biggest issue for all legacy systems, tbh. But Tiger is behind, yeah. Networking too, compilers etc.

We don't even have completely current MPlayer, though 1.3 still works. Your advice makes a lot of sense to just focus on Mplayer, my understanding is that it is one of the best for resource constrained systems (many of those running Tiger) anyway.

BTW, the latest revisions of `mplayer-devel` – after it switched to C11 – did not work for me. They build, but are broken. Did not investigate further. My `mplayer-devel` port has the last revision which still uses Apple gcc and works fine.

Sorry I didn't have a setup able to test mpv & youtube.

Nah, I just asked, it is not something worth of specific testing.
 
After two days spent on this, I fixed the build of wiliwili, a client for BiliBili (youtube-like) service.
Amount of English lang content is not comparable, but there is no difficulty with music videos.

View attachment 2563891

mpv endianness bug again shows up, so colors with SDL2 cocoa are wrong. I will try fixing that.

View attachment 2563892
Yes the endianess is messed up is something I found before too, In PPCMC7 the ffplay command forces a correct format to work around it. Definitely needs to be corrected in the SDL code tho.
 
Yes the endianess is messed up is something I found before too, In PPCMC7 the ffplay command forces a correct format to work around it. Definitely needs to be corrected in the SDL code tho.

I am not really sure who is at fault, since on its own SDL2 has correct colors, AFAICT, and mpv usually has correct colors (I added a hack to its x11 codepath to fix it, but sdl2 codepath did not have the issue). However there is also GL at play, and wiliwili requires GL in SDL2, but allows mpv to soft-render. We have to use the latter, since GL in mpv is semi-defunct and does not work in wiliwili. It’s a bit of a mess LOL
 
Yes the endianess is messed up is something I found before too, In PPCMC7 the ffplay command forces a correct format to work around it.

Colors issue aside (will be fixed eventually), I wish we had this app for YouTube. It even supports logging in via QR code via mobile app (i.e. I can log in on a PowerPC app using iPhone).
 
  • Like
Reactions: alex_free
After two days spent on this, I fixed the build of wiliwili, a client for BiliBili (youtube-like) service.
Amount of English lang content is not comparable, but there is no difficulty with music videos.

View attachment 2563891

mpv endianness bug again shows up, so colors with SDL2 cocoa are wrong. I will try fixing that.

View attachment 2563892

Upd. Colors are wrong with SDL2 X11 too, and the issue is likely on mpv side or their interoperation with wiliwili code.

I fixed the color bug:

wiliwili_be.png
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.