Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Findings] YouTube and HLS manifests on Apple clients (iOS and MacOS) #680

Closed
AudricV opened this issue Jul 11, 2021 · 5 comments · Fixed by #780
Closed

[Findings] YouTube and HLS manifests on Apple clients (iOS and MacOS) #680

AudricV opened this issue Jul 11, 2021 · 5 comments · Fixed by #780
Labels
youtube service, https://www.youtube.com/

Comments

@AudricV
Copy link
Member

AudricV commented Jul 11, 2021

When a YouTube livestream is running, we get on the website and the Android client adaptive formats, which are only playable with the DASH format. We are also getting an HLS master url, which returns streams on which you can only rewind 30 seconds (for rewindable livestreams, it depends on creator's decision). But on the iOS client, because of iOS capabilities, streams are returned as separated HLS urls on which you can rewind (with a different duration depending on the livestream), if the creator allows it. Here are some examples of the streamingData object returned for the iOS client in the player endpoint of the Innertube API:

Example 1

  "streamingData": {
    "expiresInSeconds": "21540",
    "hlsFormats": [
      {
        "itag": 229,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/229/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D133/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIgf2GkkmIy0IY25NjwVmUwhkWvpk5kDaeIwqZ8RC-utWsCIQDjseKqHTTd94RZL0tIXErttvQs3wgmUPciHQI7x0HQOQ%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRAIgGwrTmyebBuxRT9qh5T9SJ0NO4JJLuP7pPyNE7_QgmvkCIEgcF6G-1v-yAbulJh6ild97HRVkHAR-xRfog-BSUSiw/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d4015\"",
        "bitrate": 479039,
        "width": 426,
        "height": 240,
        "lastModified": "1625923191639113",
        "quality": "small",
        "fps": 30,
        "qualityLabel": "240p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 230,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/230/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D134/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIhAP8YW3rqXSRHWRC0omTHb4BwIeTq1B1xYcLzW94NlvwDAiB9cWW-T1kAzrkj445G80pxEMxb6a4_udpvH0s3Fd99Qg%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgT6Vj2WR6EE9Noz-e6wwyny3Ak2r585CLCTXFgrpLz7UCIQCVVKhnNosn8hcEYI6dpjnmYR76c-9IHo-jXVGTswXSmg%3D%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d401e\"",
        "bitrate": 1058662,
        "width": 640,
        "height": 360,
        "lastModified": "1625923191639114",
        "quality": "medium",
        "fps": 30,
        "qualityLabel": "360p",
        "projectionType": "RECTANGULAR",
        "highReplication": true
      },
      {
        "itag": 231,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/231/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D135/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRgIhAOeiV4S9_u9dWQRYEQRdMfaRxQgcll3IdbclNSTb0ZHpAiEAqC-VJgoEkRCKDtsrM6FDAWgdVavIVz4rqBeNoO9f7NY%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRAIgXXKDVKaP2IfJBUmRKJmrdczaWZ6UeL7wz8wkVm9fKwcCIG4ooniabGzyBOQwqLTM1MRzjc2ZKYcUgtfLGIdw3Ahd/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d401f\"",
        "bitrate": 1417526,
        "width": 854,
        "height": 480,
        "lastModified": "1625923191639115",
        "quality": "large",
        "fps": 30,
        "qualityLabel": "480p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 232,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/232/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D136/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRgIhALSVQFy4mTsARKU08nC1q9srQNrzxaOC_bUU7_zu3jHpAiEA_KwPWcW_TMY-TgrWjf4Pv6W6LkJdGoNoMLgF16X97zc%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRAIgV66aGVJ61cv8iCXJLolJS9JRR22wJI8kgBXOGA41UpgCIFIAaQM-tGCjJ1ZxNPkC_kViNj1jusu7sTeXeDHO7Cbq/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d401f\"",
        "bitrate": 2818252,
        "width": 1280,
        "height": 720,
        "lastModified": "1625923191639116",
        "quality": "hd720",
        "fps": 30,
        "qualityLabel": "720p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 270,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/270/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D137/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIhAOih9t8R8mtcCTt_6FxdKxSE2DIWb-xv_KlWgYCxXI0jAiAyk5P1q64NCd4PPfxz1e1fU7YUsEbJA2-qGCmbfIa_GQ%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRgIhAOdi1xAdwr-gm6H9tnjQS1qh4idauqGpKdxXtXIrPUUjAiEAkkYyrZDDAWG7Z7E80RVDwacDSVIWS_Ng_Gmdy0a4ZYE%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.640028\"",
        "bitrate": 5269522,
        "width": 1920,
        "height": 1080,
        "lastModified": "1625923191639117",
        "quality": "hd1080",
        "fps": 30,
        "qualityLabel": "1080p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 233,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/233/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/133/sgoap/gir%3Dyes%3Bitag%3D139/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Cgoi%2Csgoap%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRAIgAdUINhHHR7iq_KMONCHfxcI-uBvGBNwlm7sIlsr2SUICIAMClxfNCnwSUDQERnped5nbWL1EY2vNHDiAsm5vP72D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgc7CtwqL0yfqXDI0akVCVQim6sHzr9mnwW7_b9ptFDKYCIQDkaR5WE5sF8vjM4O4NKqJZqa_4K3OrweJvkq3gT9crgA%3D%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"mp4a.40.5\"",
        "bitrate": 64000,
        "lastModified": "1625923191639118",
        "quality": "tiny",
        "projectionType": "RECTANGULAR",
        "audioQuality": "AUDIO_QUALITY_LOW",
        "audioChannels": 2
      },
      {
        "itag": 234,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/234/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/133/sgoap/gir%3Dyes%3Bitag%3D140/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Cgoi%2Csgoap%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIgA_cLK5nnDFh5FF26iWDE9iF8zJZFKxDtjQtRKlcVawECIQCCOmx9h12X5F6DgAUbuc1TPUz5OPVY21ZosZ6Gspwwjg%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgfe2Hk9P-BddmQZLhRKW7PnrhQ0HTMJYVLiMgxYhBXAoCIQCPUS1ZUoPymTzEF4SuUCSz71OVnsIqyTQWO4n1Tj_tGQ%3D%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"mp4a.40.2\"",
        "bitrate": 144000,
        "lastModified": "1625923191639119",
        "quality": "tiny",
        "projectionType": "RECTANGULAR",
        "highReplication": true,
        "audioQuality": "AUDIO_QUALITY_MEDIUM",
        "audioChannels": 2
      },
      {
        "itag": 269,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1625947336/ei/aKjpYP2LFPCyxN8P4LOy-AY/ip/XX.XX.XX.XX/id/Dj5N0hfENuA.1/itag/269/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D160/playback_host/r5---sn-hgn7yn7z.googlevideo.com/mh/-f/mm/44%2C26/mn/sn-hgn7yn7z%2Csn-25glenes/ms/lva%2Conr/mv/m/mvi/5/pl/18/playlist_duration/3600/manifest_duration/3600/initcwndbps/977500/vprv/1/playlist_type/DVR/dover/11/mt/1625925625/fvip/5/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIhAJ0NRVCx6wMl6XHqvgvBt_8yk4T-PwxVBfGFmlROT9lbAiAd80DSi3adUh4FmuUebAFs3Ju1788Q9Wr4Ss__bBqlMA%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRgIhAM85W3EYTPxUtvBiB2JgISdCIXLeaT1XCCKhsSv1Kdr4AiEA1lkUb5kGFQO-S1H_DltKdWFTevm1pazaMFEdochhWu4%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.42c00b\"",
        "bitrate": 223088,
        "width": 256,
        "height": 144,
        "lastModified": "1625923191639121",
        "quality": "tiny",
        "fps": 15,
        "qualityLabel": "144p",
        "projectionType": "RECTANGULAR"
      }
    ],
    "aspectRatio": 1.7777778
  }
Example 2

  "streamingData": {
    "expiresInSeconds": "21540",
    "hlsFormats": [
      {
        "itag": 229,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/229/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D133/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIhAOj3aSIJi6j23xYKLW-kaNfMitfHWjcNaVKtnKJB6h7IAiBOZTG1eTBMmWDmUgC692AW5qetmbYZRatncn3kHcFtEA%3D%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRAIgWArljdgCjNszxDcj6bj8dzVoRl0TwIk18YoG0mQywY0CIH6cnaWgZQP-zaslAexMFf5bhUHXWa685hxnM6BEt0KI/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d4015\"",
        "bitrate": 440218,
        "width": 426,
        "height": 240,
        "lastModified": "1626013887110005",
        "quality": "small",
        "fps": 30,
        "qualityLabel": "240p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 230,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/230/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D134/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRgIhAJsorbug9ZaRYEw6ROpUOjPXmA_yjt5E_WiuMqL15fMTAiEAosn-BAccscCrZYZ_mdkbgxB2ddxOK0PGTJKJFerPSPg%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRAIgRznTvViAhNScfxN4uWscIFYJlMOeVcIesISuk0o75jICIFQyoTqAgE7pGP2QIEZXuK_pNAd9vzvz0IalQB1Nb1EH/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d401e\"",
        "bitrate": 811261,
        "width": 640,
        "height": 360,
        "lastModified": "1626013887110006",
        "quality": "medium",
        "fps": 30,
        "qualityLabel": "360p",
        "projectionType": "RECTANGULAR",
        "highReplication": true
      },
      {
        "itag": 231,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/231/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D135/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRgIhANNvPchIS6EVwX8naaa5jpO6il5qLqeIe0DSr8Jht-SpAiEA1JYtSjzfx0HksYKSvOB1Yyuf6Y3boqDnFILPJujr0f8%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRAIgMMMKcZTzdf-CuhD85Xpq5AvZ66L7kmmTulyb4QYzBLkCIHZxkdBKlGtEm61uL2Y1j3O3gn1T8GNdJmsyGDZsqqnh/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d401f\"",
        "bitrate": 1131317,
        "width": 854,
        "height": 480,
        "lastModified": "1626013887110007",
        "quality": "large",
        "fps": 30,
        "qualityLabel": "480p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 232,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/232/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D136/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIhAIPIba3ucj7OLSBm9hg-NRygEMtwUhd5qOdn5iakUzPFAiBxA5bVYhT0mWXit-x54zCBy7wHqp3x4ly4C7qoTyUMqA%3D%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRAIgHLGVuzaoQHjMIMM5DfrvQIx-MwrsvsOqvGaaV3v9bNcCIG8AQ9eg2PIjrun3M3_Kj_1rv0WuaFgPFPk7B0279kkL/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d401f\"",
        "bitrate": 2296770,
        "width": 1280,
        "height": 720,
        "lastModified": "1626013887110008",
        "quality": "hd720",
        "fps": 30,
        "qualityLabel": "720p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 270,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/270/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D137/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRgIhANDyT_cAZRr2oTFOQ4tXWy5PLT4Y3PBu5mY2kTPvPhU0AiEApaIqqRTCYRmrQGNSFt26jhsq7vaW41RSLIkkPmuGIFw%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRQIhANuHr3Q722LATYZsht-2kG5ugFxumX_kZpQTvJtXVIkgAiAhJbS1ft-u3d7Obf_0mt3b4bt7U8IuYsV-397JLdrasQ%3D%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d4028\"",
        "bitrate": 4409986,
        "width": 1920,
        "height": 1080,
        "lastModified": "1626013887110009",
        "quality": "hd1080",
        "fps": 30,
        "qualityLabel": "1080p",
        "projectionType": "RECTANGULAR"
      },
      {
        "itag": 233,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/233/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/133/sgoap/gir%3Dyes%3Bitag%3D139/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Cgoi%2Csgoap%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRgIhAKVgGPhvHEYQv3zg4N6sfRseRGCiTv3ByySW-INYJmPLAiEAsCmQzgbigCGZisXTOWI7-aXP0ctKcf7Xyjp69WbxHIg%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRQIgdEjYe1c9vxk16Z8ef8ueQburx5cyBcnyxpMs--Zt-T0CIQCCqG9rxOHo_A6Fvw2xoBgdcL5806ptbAQ3b74Tklcp5Q%3D%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"mp4a.40.5\"",
        "bitrate": 64000,
        "lastModified": "1626013887110010",
        "quality": "tiny",
        "projectionType": "RECTANGULAR",
        "audioQuality": "AUDIO_QUALITY_LOW",
        "audioChannels": 2
      },
      {
        "itag": 234,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/234/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/133/sgoap/gir%3Dyes%3Bitag%3D140/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Cgoi%2Csgoap%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIgHK8bUDWrpNdq4QO7YvTVpUnTqO8qV89nCbzsR14VnloCIQDbnGHKLDTcLGjSUfwsCu_CNlmvZlC47k1cDtTOERPGqw%3D%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRgIhAJ8h1q7SCdDWZ4JVqUGE0fTB1HqGeZD5JBxcDurceFbUAiEA0SS5AX1kvOo-E4F2tsGLn3whWY11cCaWsD2IpTSSoJc%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"mp4a.40.2\"",
        "bitrate": 144000,
        "lastModified": "1626013887110011",
        "quality": "tiny",
        "projectionType": "RECTANGULAR",
        "highReplication": true,
        "audioQuality": "AUDIO_QUALITY_MEDIUM",
        "audioChannels": 2
      },
      {
        "itag": 269,
        "url": "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1626037601/ei/AQnrYNeeJcD7xN8Pna6S4A4/ip/XX.XX.XX.XX/id/RTpWYWIfP7Y.1/itag/269/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgovp/gir%3Dyes%3Bitag%3D160/playback_host/r5---sn-hgn7yn7s.googlevideo.com/hcs/sd%2Csd/mh/SX/mm/44%2C26/mn/sn-hgn7yn7s%2Csn-25ge7nzs/ms/lva%2Conr/mv/m/mvi/5/pl/18/rmhost/r1---sn-hgn7yn7s.googlevideo.com%2C/shardbypass/yes/smhost/r1---sn-hgn7rn7k.googlevideo.com%2C/playlist_duration/900/manifest_duration/900/initcwndbps/842500/vprv/1/playlist_type/DVR/dover/11/mt/1626015158/fvip/1/nvgoi/1/short_key/1/keepalive/yes/fexp/24001373%2C24007246/sparams/expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cratebypass%2Clive%2Csgovp%2Cplaylist_duration%2Cmanifest_duration%2Cvprv%2Cplaylist_type/sig/AOq0QJ8wRQIgQzXQxAzW62KcyDnG__yaAVX3ALRIU4VUyCXlFoCkGO8CIQCKpBpITEBHeE8OVkiPR_dnhScYm0D-U6h6EQRxNstnng%3D%3D/lsparams/playback_host%2Chcs%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crmhost%2Cshardbypass%2Csmhost%2Cinitcwndbps/lsig/AG3C_xAwRgIhAIOMwdKm41F93nbqw0WcLy-0NIOJVDHN76i_5vrAMuL-AiEAjHeWsmYXkuddrHYSv9f3Z4V4610pyAe9zlv_IAR9xBg%3D/playlist/index.m3u8",
        "mimeType": "application/x-mpegURL; codecs=\"avc1.4d400c\"",
        "bitrate": 201834,
        "width": 256,
        "height": 144,
        "lastModified": "1626013887110013",
        "quality": "tiny",
        "fps": 30,
        "qualityLabel": "144p",
        "projectionType": "RECTANGULAR"
      }
    ],
    "aspectRatio": 1.7777778
  }

Livestreams which have 1080p60 and 720p60 streams variants on the web and on the Android clients don't have a 60fps variant for the iOS client: only 30fps streams are returned for these qualities.

So, on livestreams, we can return, if we fetch the iOS response (similar to #562 but with iOS as the clientName value):

  • a 144p stream (which can have 15/30 fps) (with the streamingData object from the iOS JSON response)
  • an other 144p stream with 30fps (from the web/Android manifest)
  • two 240p streams (30 fps)
  • two 360p streams (30 fps)
  • two 480p streams (30 fps)
  • a 720p stream (30 fps) (with the streamingData object from the iOS JSON response)
  • an other 720p stream with 30 or 60 fps (depending of the stream send to YouTube by the creator) (from the web/Android manifest)
  • a 1080p stream (30 fps) (with the streamingData object from the iOS JSON response)
  • an other 1080p stream with 30 or 60 fps (depending of the stream send to YouTube by the creator) (from the web/Android manifest)

Returning all these qualities may be useful for some users, especially for users who want to stream 720/1080p qualities but not with 60 frames per second (to save data or to preserve performance on low-end devices, for example).

@AudricV AudricV added the youtube service, https://www.youtube.com/ label Jul 11, 2021
@unixfox
Copy link

unixfox commented Jul 23, 2021

Some people said that they can have 4K 30fps on the iOS app: https://old.reddit.com/r/ios/comments/he47gi/4k_playback_in_ios_14_on_youtube/

Maybe we need to fill more parameters in the query in order to have it when using iOS client?

You can also fetch using an Apple TV too because "clientName": "tvapple" and "clientVersion": "1.0" works. Too bad there is no 4K video stream.

@MinePlayersPE
Copy link

Note: The TVANDROID/TVAPPLE client is probably legacy/outdated, since:

  1. Most (if not all) YouTube clients for TV right now use TVHTML5, including Apple TV and Android TV (based on Google searches and https://cobalt.foo/)
  2. There is ANDROID_TV which can be used with the versions from the YouTube for Android TV app (https://www.apkmirror.com/apk/google-inc/youtube-for-android-tv-android-tv/) while TVANDROID cannot
  3. This is just a hunch, but based on the client dumps, looks like the unused/unknown/unintended clients only give 17+18+22 itag formats (e.g. GOOGLE_MEDIA_ACTIONS, TVHTML5_YONGLE, and TVAPPLE/TVANDROID)

@FireMasterK
Copy link
Member

I did not experience this on 5yx6BWlEVcY
image

@AudricV
Copy link
Member Author

AudricV commented Dec 29, 2021

Update: by adding a deviceModel field with a value like iPhone11,8 (using a different iPhone version and a different number after the comma also works), you can get 60fps streams instead of 30fps streams when available!

Thanks to @TheFrenchGhosty for having access to an iOS device on which the YouTube app is installed and for sending requests (especially the bodies) made by the app!

Additional update: iOS clients don't get the same result: they get the same results as the Android/WEB/MWEB/TV_HTML5 (and other Android and web clients) clients for livestreams, with an HLS manifest (different of the one you can get with these clients).

@AudricV
Copy link
Member Author

AudricV commented Jun 16, 2022

Related notes about YouTube HLS manifests:

  • when using a Safari desktop user-agent with the WEB client, you can get a HLS manifest on every video (+the DASH manifest usually returned for videos with OTF streams, livestreams and ended livestreams/post-live streams), on which audio and video streams are muxed in the same file (itags 91-96 and 300-301), like with the HLS manifest returned for livestreams and ended livestreams/post-live streams;
  • the maximal resolution available in HLS manifests is 1080p.

@AudricV AudricV changed the title [Findings] [YouTube] HLS livestreams on the iOS client [Findings] YouTube and HLS manifests on Apple clients (iOS and MacOS) Jun 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
youtube service, https://www.youtube.com/
Projects
None yet
4 participants