Jump to content

Who here has a Youtube-DL compile for WinXP?


Recommended Posts

Posted

Oh, it's different again. Probably not. I only saw the error in about 1 out of 20 downloads before.

Downloading android vr player API JSON


Posted (edited)
On 2/21/2026 at 2:02 PM, j7n said:

[youtube] cnX5zJ_qGz0: Downloading ios downgraded player API JSON
WARNING: [youtube] YouTube said: ERROR - Precondition check failed.
WARNING: [youtube] HTTP Error 400: Bad Request. Retrying (1/3)...

I saw that "WARNING" only once (but I don't fetch YT that often ;)) and put it down to a transient "glitch" on YT's side; BTW, it was specific to the "ios-downgraded" YT player client (see below) ...

On 2/22/2026 at 2:27 PM, j7n said:

Oh, it's different again.

The "ios-downgraded" YT player client (m3u8 formats) had a very short lifespan :} , as it was removed in

https://github.com/yt-dlp/yt-dlp/commit/c3674575faa23b20e97be8b73f68b9f7b4cea9ab

(https://github.com/yt-dlp/yt-dlp/pull/15786)

as a result of 

https://github.com/yt-dlp/yt-dlp/issues/15782

The sample YT clip on that issue was geo-blocked (Vietnam-only), so I couldn't test/replicate myself :( (and I do wonder whether the devs could, either); but the firm conviction (by the devs) that the IOS client is "unreliable" led to "ios-downgraded" being unceremoniously axed :( (and the issue was later locked, due to OT chit-chat) ...

The last official master build with that client enabled was 2026.01.31.224855; the last nicolaasjan build with that client enabled was 2026.01.30.064627; the fact your log mentions "ios downgraded player" means you're on one of the "older" builds...

On 2/22/2026 at 2:27 PM, j7n said:

Downloading android vr player API JSON

The removal of the "ios_downgraded player" means that currently, without enabling a JS runtime (and without a YT account), ONLY the "android_vr" formats are available (no m3u8, though); with a JS runtime enabled, you'll also get the few WEB-S (web_safari) m3u8 formats offered...

FWIW, for me (in my part of the world), the "ios_downgraded" yt-client formats (ALL m3u8) still work as I write this; so, I try to locally revert c367457 and make use of them: 

yt-dlp -vF "cnX5zJ_qGz0" => 

[debug] Command-line config: ['--ffmpeg-location', 'FFmpeg', '--downloader-args', 'ffmpeg_i:-hide_banner -v 8 -stats', '-vF', 'cnX5zJ_qGz0']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version master@2026.02.21.201720 from yt-dlp/yt-dlp-master-builds [646bb31f3] (zip)
[debug] Python 3.11.14 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.6.1 27 Jan 2026)
[debug] exe versions: ffmpeg n8.1-dev-630-N-121254-g635cb45 (setts), ffprobe n8.1-dev-630-N-121254-g635cb45
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2026.01.04, mutagen-1.47.0, requests-2.32.5, sqlite3-3.51.2, urllib3-2.6.3, websockets-16.0, yt_dlp_ejs-0.5.0
[debug] JS runtimes: none
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Plugin directories: none
[debug] Loaded 1864 extractors
[debug] [youtube] [pot] PO Token Providers: none
[debug] [youtube] [pot] PO Token Cache Providers: memory
[debug] [youtube] [pot] PO Token Cache Spec Providers: webpo
[debug] [youtube] [jsc] JS Challenge Providers: bun (unavailable), deno (unavailable), node (unavailable), quickjs (unavailable)
[youtube] Extracting URL: cnX5zJ_qGz0
[youtube] cnX5zJ_qGz0: Downloading webpage
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
[debug] [youtube] Forcing "tv" player JS variant for player 4c5cf06a
        original url = /s/player/4c5cf06a/player_es6.vflset/en_US/base.js
[youtube] cnX5zJ_qGz0: Downloading android vr player API JSON
[youtube] cnX5zJ_qGz0: Downloading ios downgraded player API JSON
[debug] [youtube] cnX5zJ_qGz0: ios_downgraded client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios_downgraded.gvs+XXX". For more information, refer to  https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide
[youtube] cnX5zJ_qGz0: Downloading m3u8 information
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[info] Available formats for cnX5zJ_qGz0:
ID  EXT   RESOLUTION FPS CH |   FILESIZE    TBR PROTO | VCODEC           VBR ACODEC      ABR ASR MORE INFO
------------------------------------------------------------------------------------------------------------------------------------
sb3 mhtml 48x27        0    |                   mhtml | images                 storyboard
sb2 mhtml 80x45        0    |                   mhtml | images                 storyboard
sb1 mhtml 160x90       0    |                   mhtml | images                 storyboard
sb0 mhtml 320x180      0    |                   mhtml | images                 storyboard
233 mp4   audio only        |                   m3u8  | audio only           unknown             [en] Untested, Default, low, IOS-D
234 mp4   audio only        |                   m3u8  | audio only           unknown             [en] Untested, Default, high, IOS-D
139 m4a   audio only      2 |    6.36MiB    49k https | audio only           mp4a.40.5   49k 22k [en] low, ANDR-V, m4a_dash
249 webm  audio only      2 |    6.56MiB    50k https | audio only           opus        50k 48k [en] low, ANDR-V, webm_dash
140 m4a   audio only      2 |   16.89MiB   129k https | audio only           mp4a.40.2  129k 44k [en] medium, ANDR-V, m4a_dash
251 webm  audio only      2 |   15.25MiB   117k https | audio only           opus       117k 48k [en] medium, ANDR-V, webm_dash
602 mp4   256x144     12    | ~ 11.26MiB    86k m3u8  | vp09.00.10.08    86k video only          Untested, IOS-D
269 mp4   256x144     24    | ~ 22.13MiB   170k m3u8  | avc1.4D400C     170k video only          Untested, IOS-D
160 mp4   256x144     24    |    9.00MiB    69k https | avc1.4d400c      69k video only          144p, ANDR-V, mp4_dash
603 mp4   256x144     24    | ~ 16.84MiB   129k m3u8  | vp09.00.11.08   129k video only          Untested, IOS-D
278 webm  256x144     24    |    8.15MiB    63k https | vp9              63k video only          144p, ANDR-V, webm_dash
394 mp4   256x144     24    |    6.96MiB    53k https | av01.0.00M.08    53k video only          144p, ANDR-V, mp4_dash
229 mp4   426x240     24    | ~ 40.49MiB   310k m3u8  | avc1.4D4015     310k video only          Untested, IOS-D
133 mp4   426x240     24    |   19.12MiB   147k https | avc1.4d4015     147k video only          240p, ANDR-V, mp4_dash
604 mp4   426x240     24    | ~ 28.77MiB   221k m3u8  | vp09.00.20.08   221k video only          Untested, IOS-D
242 webm  426x240     24    |   17.28MiB   132k https | vp9             132k video only          240p, ANDR-V, webm_dash
395 mp4   426x240     24    |   16.42MiB   126k https | av01.0.00M.08   126k video only          240p, ANDR-V, mp4_dash
230 mp4   640x360     24    | ~ 95.31MiB   731k m3u8  | avc1.4D401E     731k video only          Untested, IOS-D
134 mp4   640x360     24    |   36.77MiB   282k https | avc1.4d401e     282k video only          360p, ANDR-V, mp4_dash
18  mp4   640x360     24  2 |   78.17MiB   599k https | avc1.42001E          mp4a.40.2       44k [en] 360p, ANDR-V
605 mp4   640x360     24    | ~ 68.00MiB   521k m3u8  | vp09.00.21.08   521k video only          Untested, IOS-D
243 webm  640x360     24    |   37.60MiB   288k https | vp9             288k video only          360p, ANDR-V, webm_dash
396 mp4   640x360     24    |   29.57MiB   227k https | av01.0.01M.08   227k video only          360p, ANDR-V, mp4_dash
231 mp4   854x480     24    | ~136.31MiB  1045k m3u8  | avc1.4D401E    1045k video only          Untested, IOS-D
135 mp4   854x480     24    |   69.02MiB   529k https | avc1.4d401e     529k video only          480p, ANDR-V, mp4_dash
606 mp4   854x480     24    | ~ 99.78MiB   765k m3u8  | vp09.00.30.08   765k video only          Untested, IOS-D
244 webm  854x480     24    |   57.32MiB   440k https | vp9             440k video only          480p, ANDR-V, webm_dash
397 mp4   854x480     24    |   51.08MiB   392k https | av01.0.04M.08   392k video only          480p, ANDR-V, mp4_dash
232 mp4   1280x720    24    | ~185.82MiB  1425k m3u8  | avc1.4D401F    1425k video only          Untested, IOS-D
136 mp4   1280x720    24    |  127.01MiB   974k https | avc1.4d401f     974k video only          720p, ANDR-V, mp4_dash
609 mp4   1280x720    24    | ~181.16MiB  1389k m3u8  | vp09.00.31.08  1389k video only          Untested, IOS-D
247 webm  1280x720    24    |  106.76MiB   819k https | vp9             819k video only          720p, ANDR-V, webm_dash
398 mp4   1280x720    24    |   89.03MiB   683k https | av01.0.05M.08   683k video only          720p, ANDR-V, mp4_dash
270 mp4   1920x1080   24    | ~611.50MiB  4689k m3u8  | avc1.640028    4689k video only          Untested, IOS-D
137 mp4   1920x1080   24    |  307.65MiB  2359k https | avc1.640028    2359k video only          1080p, ANDR-V, mp4_dash
614 mp4   1920x1080   24    | ~304.82MiB  2337k m3u8  | vp09.00.40.08  2337k video only          Untested, IOS-D
248 webm  1920x1080   24    |  175.33MiB  1344k https | vp9            1344k video only          1080p, ANDR-V, webm_dash
399 mp4   1920x1080   24    |  161.10MiB  1235k https | av01.0.08M.08  1235k video only          1080p, ANDR-V, mp4_dash
620 mp4   2560x1440   24    | ~  1.20GiB  9395k m3u8  | vp09.00.50.08  9395k video only          Untested, IOS-D
271 webm  2560x1440   24    |  613.49MiB  4704k https | vp9            4704k video only          1440p, ANDR-V, webm_dash
400 mp4   2560x1440   24    |  513.02MiB  3934k https | av01.0.12M.08  3934k video only          1440p, ANDR-V, mp4_dash
625 mp4   3840x2160   24    | ~  2.39GiB 18784k m3u8  | vp09.00.50.08 18784k video only          Untested, IOS-D
313 webm  3840x2160   24    |    1.56GiB 12253k https | vp9           12253k video only          2160p, ANDR-V, webm_dash
401 mp4   3840x2160   24    |  948.58MiB  7273k https | av01.0.12M.08  7273k video only          2160p, ANDR-V, mp4_dash

and then:

yt-dlp -f 232+234 -N 2 "cnX5zJ_qGz0" => 

[youtube] Extracting URL: cnX5zJ_qGz0
[youtube] cnX5zJ_qGz0: Downloading webpage
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
[youtube] cnX5zJ_qGz0: Downloading android vr player API JSON
[youtube] cnX5zJ_qGz0: Downloading ios downgraded player API JSON
[youtube] cnX5zJ_qGz0: Downloading m3u8 information
[info] Testing format 232
[info] Testing format 234
[info] cnX5zJ_qGz0: Downloading 1 format(s): 232+234
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 189
[download] Destination: Your RAM Is Fake. The Moon Broke Timezones. And Your Compiler Is Guessing. [cnX5zJ_qGz0].f232.mp4
[download] 100% of  132.64MiB in 00:03:59 at 567.14KiB/s
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 189
[download] Destination: Your RAM Is Fake. The Moon Broke Timezones. And Your Compiler Is Guessing. [cnX5zJ_qGz0].f234.mp4
[download] 100% of   17.02MiB in 00:00:44 at 393.03KiB/s
[Merger] Merging formats into "Your RAM Is Fake. The Moon Broke Timezones. And Your Compiler Is Guessing. [cnX5zJ_qGz0].mp4"
Deleting original file Your RAM Is Fake. The Moon Broke Timezones. And Your Compiler Is Guessing. [cnX5zJ_qGz0].f234.mp4 (pass -k to keep)
Deleting original file Your RAM Is Fake. The Moon Broke Timezones. And Your Compiler Is Guessing. [cnX5zJ_qGz0].f232.mp4 (pass -k to keep)

:whistle:

Edited by VistaLover
Posted

I kept the previous version on Ytdlp around so that I can revert to it if Android VR stops working. So far I see no difference  in their workings. Both give me h.264/aac.

  • 1 month later...
  • 2 weeks later...
Posted

Thanks for your effort @autodidact :)

And yes, I know this update is not as important as the previous one.

Confirmed working with the latest Python 3.14.4 from adang1345 (at least yt-dlp recognises it):

[debug] Command-line config: ['-v']
[debug] User config "C:\Users\user\AppData\Roaming\yt-dlp\config.txt": ['--rm-cache-dir', '--console-title', '--js-runtimes', 'node', '-o', '~/Desktop/%(title)s.%(ext)s', '-S', 'res:1080,vcodec:vp9,acodec:opus', '--embed-thumbnail', '--add-metadata', '--convert-thumbnails', 'jpg', '--ppa', 'ffmpeg:-metadata synopsis=""', '--force-ipv4', '-N', '6', '--sponsorblock-remove', 'all']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out cp1252 (No VT), error cp1252 (No VT), screen cp1252 (No VT)
[debug] yt-dlp version nicolaasjan/yt-dlp@2026.04.08.143024 (win7_exe*)
[debug] Python 3.14.4 (CPython AMD64 64bit) - Windows-7-6.1.7601-SP1 (OpenSSL 3.6.2 7 Apr 2026)
[debug] exe versions: ffmpeg git-2026-03-29-368f581-ffmpeg-windows-build-helpers (fdk,setts), ffprobe git-2026-03-29-368f581-ffmpeg-windows-build-helpers, phantomjs 2.5.0
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2026.02.25, curl_cffi-0.15.0, mutagen-1.47.0, requests-2.33.1, sqlite3-3.50.4, urllib3-2.6.3, websockets-16.0, yt_dlp_ejs-0.8.0
[debug] JS runtimes: node-20.19.2
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Plugin directories: C:\Users\user\AppData\Roaming\yt-dlp\plugins\bgutil-ytdlp-pot-provider\yt_dlp_plugins
[debug] Loaded 1864 extractors
Removing cache dir C:\Users\user/.cache\yt-dlp ..

yt-dlp_win7.zip (64-bit)

@johk, it is now built with curl_cffi-0.15.0, so if this still doesn't work with your configuration, please use the 32-bit build.

Posted (edited)
Don't worry, as I knew this was going to happen soon or later, I had to "resign" and I spent time on testing another version and alternate software.

But thanks to give this extra time to read, test, etc.

So far so good, tested this new yt-dlp build, and works.

But it is a shame because, as every software nowadays (despite the version I'm using now is still old, but isn't less true that the newer, in regard to the OPT DNS extension, hasn't evolved since) it lacks features the original software had and quite a few more issues.

Newer doesn't mean better and almost all at MSFN, or these threads, more or less, agreed with this statement, and that is the sad story :/

EDIT: still, I don't find the need for this tool to require it. It doesn't add anything special, less as the behavior described earlier. Nonsense. Edited by johk
  • 3 weeks later...
Posted
On 9/29/2025 at 1:37 PM, autodidact said:

Thank you @nicolaasjan for your yt-dlp builds.  

I have made a Windows XP compatible build of FFmpeg that targets a Pentium 4.

I relied heavily on rdp and @Reino build scripts so thanks also to them.

ffmpeg-8.1-630-635cb4543f-win32-static-xpmod-P4.7z

libfdk-aac-2.0.3-158-d8e6b1a-win32-xpmod-P4.7z

I'm curious how you worked around w32pthreads.h? It calls for multiple Vista+ functions like SRW locks and such, but I find no mention of the file in any patch.

Posted (edited)

I have been using the old version of ffmpeg.exe 3.4.1 (2017) for a long time with current versions of youtube-dl, e.g. to download and combine separate audio and video files:

youtube-dl -f 136+140 link

and this work OK.
What are you using the newer version of ffmpeg for e.g. from http://blog.k-tai-douga.com/ ?

Edited by reboot12
Posted

I guess updating ffmpeg is worthwhile if you have multiple uses for it. For example, foo_input_ffmpeg for Foobar2000 to play odd formats, E-AC-3 en/de-coder, or whatever. I don't update it unless something doesn't work, and the new version promises to work better. Ffmpeg is getting crazy big, and relatively slow to repetedly open for short tracks.

Posted

@j7n

  • I no use Foobar2000
  • for playback audio/video I use VLC
  • ffmpeg current version is about ~100 MB :o

The old version of ffmpeg is completely sufficient for me.

Posted

Maybe someone could make a ffmpeg build with the most heavy parts cut out. Audio players can selectively include only what they need up a few megabytes. I suspect that the size is mostly the latest 3rd party video codecs.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...