Skip to content

Add support for downloading YouTube video with IAMF/Eclipsa Audio #12349

@CasperMcFadden95

Description

@CasperMcFadden95

Checklist

  • I'm requesting a site-specific feature
  • I've verified that I have updated yt-dlp to nightly or master (update instructions)
  • I've checked that all provided URLs are playable in a browser with the same IP and same login details
  • I've searched the bugtracker for similar requests including closed ones. DO NOT post duplicates
  • I've read about sharing account credentials and I'm willing to share it if required

Region

Worldwide

Example URLs

https://www.youtube.com/watch?v=ItvQeAkpG-M
https://www.youtube.com/watch?v=CD7n92qPuq4

Provide a description that is worded well enough to be understood

The IAMF/Eclipsa Audio track is format 773 and yt-dlp supports downloading it. It would be nice if the default audio (if available) that is used when downloading a video is format 773 instead of format 251.This format is still pre-release but more info is available here https://www.flatpanelshd.com/focus.php?subaction=showfull&id=1739336996 . https://www.flatpanelshd.com/pictures/eclipsaaudioces_2_large.jpg is of a different vide but has debug info showing the codec id. I think only MP4 currently supports IAMF audio https://github.com/AOMediaCodec/iamf-tools/blob/main/docs/external/encoding_with_external_tools.md#merge-an-iamf-file-with-video-into-mp4-using-ffmpeg but I wasn't able to figure this out.

The IAMF audio file can be downloaded with:
yt-dlp -f 773 'https://www.youtube.com/watch?v=ItvQeAkpG-M'
yt-dlp -f 773 'https://www.youtube.com/watch?v=CD7n92qPuq4'

The downloaded m4a can be played with ffplay

Provide verbose output that clearly demonstrates the problem

  • Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • If using API, add 'verbose': True to YoutubeDL params instead
  • Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

(python3venv) ~$ yt-dlp -vU -f 773 'https://www.youtube.com/watch?v=ItvQeAkpG-M'
[debug] Command-line config: ['-vU', '-f', '773', 'https://www.youtube.com/watch?v=ItvQeAkpG-M']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2025.02.11.232920 from yt-dlp/yt-dlp-nightly-builds [6ca23ffaa] (pip)
[debug] Python 3.12.9 (CPython arm64 64bit) - macOS-15.3-arm64-arm-64bit (OpenSSL 3.4.0 22 Oct 2024)
[debug] exe versions: ffmpeg 7.1 (setts), ffprobe 7.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.06.02, curl_cffi-0.7.4 (unsupported), mutagen-1.47.0, requests-2.32.3, sqlite3-3.48.0, urllib3-2.2.2, websockets-13.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1841 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2025.02.11.232920 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2025.02.11.232920 from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=ItvQeAkpG-M
[youtube] ItvQeAkpG-M: Downloading webpage
[youtube] ItvQeAkpG-M: Downloading tv client config
[youtube] ItvQeAkpG-M: Downloading player 074a8365
[youtube] ItvQeAkpG-M: Downloading tv player API JSON
[youtube] ItvQeAkpG-M: Downloading ios player API JSON
[debug] Loading youtube-nsig.074a8365 from cache
[debug] [youtube] Decrypted nsig MxI_CNhaAuiawV3Qe => FXuW3GFiluvh_A
[debug] Loading youtube-nsig.074a8365 from cache
[debug] [youtube] Decrypted nsig cjg4KJHN28YIP3iBe => C2fOaI0pj7yH-A
WARNING: Unknown codec iamf.001.001.Opus
[debug] [youtube] ItvQeAkpG-M: ios 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.gvs+XXX". For more information, refer to  https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"
[youtube] ItvQeAkpG-M: 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] ItvQeAkpG-M: Downloading 1 format(s): 773
[debug] Invoking http downloader on " REMOVED FOR PRICVACT
[download] Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].m4a has already been downloaded
[download] 100% of   14.39MiB


(python3venv) ~$ yt-dlp -vU 'https://www.youtube.com/watch?v=ItvQeAkpG-M' 
[debug] Command-line config: ['-vU', 'https://www.youtube.com/watch?v=ItvQeAkpG-M']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2025.02.11.232920 from yt-dlp/yt-dlp-nightly-builds [6ca23ffaa] (pip)
[debug] Python 3.12.9 (CPython arm64 64bit) - macOS-15.3-arm64-arm-64bit (OpenSSL 3.4.0 22 Oct 2024)
[debug] exe versions: ffmpeg 7.1 (setts), ffprobe 7.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.21.0, brotli-1.1.0, certifi-2024.06.02, curl_cffi-0.7.4 (unsupported), mutagen-1.47.0, requests-2.32.3, sqlite3-3.48.0, urllib3-2.2.2, websockets-13.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1841 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2025.02.11.232920 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2025.02.11.232920 from yt-dlp/yt-dlp-nightly-builds)
[youtube] Extracting URL: https://www.youtube.com/watch?v=ItvQeAkpG-M
[youtube] ItvQeAkpG-M: Downloading webpage
[youtube] ItvQeAkpG-M: Downloading tv client config
[youtube] ItvQeAkpG-M: Downloading player af7f576f
[youtube] ItvQeAkpG-M: Downloading tv player API JSON
[youtube] ItvQeAkpG-M: Downloading ios player API JSON
[debug] Loading youtube-nsig.af7f576f from cache
[debug] [youtube] Decrypted nsig ncv2yz1M1PrTkeqks1 => e6q_n-egWwpFmw
[debug] Loading youtube-nsig.af7f576f from cache
[debug] [youtube] Decrypted nsig qxG8dZbVGHyAT_s0TD => PVObXBxMErcPjg
WARNING: Unknown codec iamf.001.001.Opus
[debug] [youtube] ItvQeAkpG-M: ios 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.gvs+XXX". For more information, refer to  https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"
[youtube] ItvQeAkpG-M: 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
[debug] Default format spec: bestvideo*+bestaudio/best
[info] ItvQeAkpG-M: Downloading 1 format(s): 313+251
[debug] Invoking http downloader on " REMOVED FOR PRIVACY"
[download] Destination: Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].f313.webm
[download] 100% of  191.17MiB in 00:00:11 at 17.21MiB/s
[debug] Invoking http downloader on " REMOVED FOR PRIVACY"
[download] Destination: Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].f251.webm
[download] 100% of    2.12MiB in 00:00:00 at 12.73MiB/s
[Merger] Merging formats into "Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].webm"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].f313.webm' -i 'file:Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].f251.webm' -c copy -map 0:v:0 -map 1:a:0 -movflags +faststart 'file:Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].temp.webm'
Deleting original file Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].f251.webm (pass -k to keep)
Deleting original file Introduction to Eclipsa Audio (IAMF) [ItvQeAkpG-M].f313.webm (pass -k to keep)
(python3venv) ~$

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugBug that is not site-specificexternal issueIssue with an external tool or sitesite-bugIssue with a specific websitesite:youtube

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions