# Part of the Invidious project # https://github.com/iv-org/invidious # License: AGPLv3 FORMATS = { 5: {"ext": "flv", "width": 400, "height": 240, "acodec": "mp3", "abr": 64, "vcodec": "h263"}, 6: {"ext": "flv", "width": 450, "height": 270, "acodec": "mp3", "abr": 64, "vcodec": "h263"}, 13: {"ext": "3gp", "acodec": "aac", "vcodec": "mp4v"}, 17: {"ext": "3gp", "width": 176, "height": 144, "acodec": "aac", "abr": 24, "vcodec": "mp4v"}, 18: {"ext": "mp4", "width": 640, "height": 360, "acodec": "aac", "abr": 96, "vcodec": "h264"}, 22: {"ext": "mp4", "width": 1280, "height": 720, "acodec": "aac", "abr": 192, "vcodec": "h264"}, 34: {"ext": "flv", "width": 640, "height": 360, "acodec": "aac", "abr": 128, "vcodec": "h264"}, 35: {"ext": "flv", "width": 854, "height": 480, "acodec": "aac", "abr": 128, "vcodec": "h264"}, 36: {"ext": "3gp", "width": 320, "acodec": "aac", "vcodec": "mp4v"}, 37: {"ext": "mp4", "width": 1920, "height": 1080, "acodec": "aac", "abr": 192, "vcodec": "h264"}, 38: {"ext": "mp4", "width": 4096, "height": 3072, "acodec": "aac", "abr": 192, "vcodec": "h264"}, 43: {"ext": "webm", "width": 640, "height": 360, "acodec": "vorbis", "abr": 128, "vcodec": "vp8"}, 44: {"ext": "webm", "width": 854, "height": 480, "acodec": "vorbis", "abr": 128, "vcodec": "vp8"}, 45: {"ext": "webm", "width": 1280, "height": 720, "acodec": "vorbis", "abr": 192, "vcodec": "vp8"}, 46: {"ext": "webm", "width": 1920, "height": 1080, "acodec": "vorbis", "abr": 192, "vcodec": "vp8"}, 59: {"ext": "mp4", "width": 854, "height": 480, "acodec": "aac", "abr": 128, "vcodec": "h264"}, 78: {"ext": "mp4", "width": 854, "height": 480, "acodec": "aac", "abr": 128, "vcodec": "h264"}, # 3D videos 82: {"ext": "mp4", "height": 360, "format": "3D", "acodec": "aac", "abr": 128, "vcodec": "h264"}, 83: {"ext": "mp4", "height": 480, "format": "3D", "acodec": "aac", "abr": 128, "vcodec": "h264"}, 84: {"ext": "mp4", "height": 720, "format": "3D", "acodec": "aac", "abr": 192, "vcodec": "h264"}, 85: {"ext": "mp4", "height": 1080, "format": "3D", "acodec": "aac", "abr": 192, "vcodec": "h264"}, 100: {"ext": "webm", "height": 360, "format": "3D", "acodec": "vorbis", "abr": 128, "vcodec": "vp8"}, 101: {"ext": "webm", "height": 480, "format": "3D", "acodec": "vorbis", "abr": 192, "vcodec": "vp8"}, 102: {"ext": "webm", "height": 720, "format": "3D", "acodec": "vorbis", "abr": 192, "vcodec": "vp8"}, # Apple HTTP Live Streaming 91: {"ext": "mp4", "height": 144, "format": "HLS", "acodec": "aac", "abr": 48, "vcodec": "h264"}, 92: {"ext": "mp4", "height": 240, "format": "HLS", "acodec": "aac", "abr": 48, "vcodec": "h264"}, 93: {"ext": "mp4", "height": 360, "format": "HLS", "acodec": "aac", "abr": 128, "vcodec": "h264"}, 94: {"ext": "mp4", "height": 480, "format": "HLS", "acodec": "aac", "abr": 128, "vcodec": "h264"}, 95: {"ext": "mp4", "height": 720, "format": "HLS", "acodec": "aac", "abr": 256, "vcodec": "h264"}, 96: {"ext": "mp4", "height": 1080, "format": "HLS", "acodec": "aac", "abr": 256, "vcodec": "h264"}, 132: {"ext": "mp4", "height": 240, "format": "HLS", "acodec": "aac", "abr": 48, "vcodec": "h264"}, 151: {"ext": "mp4", "height": 72, "format": "HLS", "acodec": "aac", "abr": 24, "vcodec": "h264"}, # DASH mp4 video 133: {"ext": "mp4", "height": 240, "format": "DASH video", "vcodec": "h264"}, 134: {"ext": "mp4", "height": 360, "format": "DASH video", "vcodec": "h264"}, 135: {"ext": "mp4", "height": 480, "format": "DASH video", "vcodec": "h264"}, 136: {"ext": "mp4", "height": 720, "format": "DASH video", "vcodec": "h264"}, 137: {"ext": "mp4", "height": 1080, "format": "DASH video", "vcodec": "h264"}, 138: {"ext": "mp4", "format": "DASH video", "vcodec": "h264"}, # Height can vary (https://github.com/ytdl-org/youtube-dl/issues/4559) 160: {"ext": "mp4", "height": 144, "format": "DASH video", "vcodec": "h264"}, 212: {"ext": "mp4", "height": 480, "format": "DASH video", "vcodec": "h264"}, 264: {"ext": "mp4", "height": 1440, "format": "DASH video", "vcodec": "h264"}, 298: {"ext": "mp4", "height": 720, "format": "DASH video", "vcodec": "h264", "fps": 60}, 299: {"ext": "mp4", "height": 1080, "format": "DASH video", "vcodec": "h264", "fps": 60}, 266: {"ext": "mp4", "height": 2160, "format": "DASH video", "vcodec": "h264"}, # Dash mp4 audio 139: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "abr": 48, "container": "m4a_dash"}, 140: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "abr": 128, "container": "m4a_dash"}, 141: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "abr": 256, "container": "m4a_dash"}, 256: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "container": "m4a_dash"}, 258: {"ext": "m4a", "format": "DASH audio", "acodec": "aac", "container": "m4a_dash"}, 325: {"ext": "m4a", "format": "DASH audio", "acodec": "dtse", "container": "m4a_dash"}, 328: {"ext": "m4a", "format": "DASH audio", "acodec": "ec-3", "container": "m4a_dash"}, # Dash webm 167: {"ext": "webm", "height": 360, "width": 640, "format": "DASH video", "container": "webm", "vcodec": "vp8"}, 168: {"ext": "webm", "height": 480, "width": 854, "format": "DASH video", "container": "webm", "vcodec": "vp8"}, 169: {"ext": "webm", "height": 720, "width": 1280, "format": "DASH video", "container": "webm", "vcodec": "vp8"}, 170: {"ext": "webm", "height": 1080, "width": 1920, "format": "DASH video", "container": "webm", "vcodec": "vp8"}, 218: {"ext": "webm", "height": 480, "width": 854, "format": "DASH video", "container": "webm", "vcodec": "vp8"}, 219: {"ext": "webm", "height": 480, "width": 854, "format": "DASH video", "container": "webm", "vcodec": "vp8"}, 278: {"ext": "webm", "height": 144, "format": "DASH video", "container": "webm", "vcodec": "vp9"}, 242: {"ext": "webm", "height": 240, "format": "DASH video", "vcodec": "vp9"}, 243: {"ext": "webm", "height": 360, "format": "DASH video", "vcodec": "vp9"}, 244: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9"}, 245: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9"}, 246: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9"}, 247: {"ext": "webm", "height": 720, "format": "DASH video", "vcodec": "vp9"}, 248: {"ext": "webm", "height": 1080, "format": "DASH video", "vcodec": "vp9"}, 271: {"ext": "webm", "height": 1440, "format": "DASH video", "vcodec": "vp9"}, # itag 272 videos are either 3840x2160 (e.g. RtoitU2A-3E) or 7680x4320 (sLprVF6d7Ug) 272: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9"}, 302: {"ext": "webm", "height": 720, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 303: {"ext": "webm", "height": 1080, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 308: {"ext": "webm", "height": 1440, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 313: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9"}, 315: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 330: {"ext": "webm", "height": 144, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 331: {"ext": "webm", "height": 240, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 332: {"ext": "webm", "height": 360, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 333: {"ext": "webm", "height": 480, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 334: {"ext": "webm", "height": 720, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 335: {"ext": "webm", "height": 1080, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 336: {"ext": "webm", "height": 1440, "format": "DASH video", "vcodec": "vp9", "fps": 60}, 337: {"ext": "webm", "height": 2160, "format": "DASH video", "vcodec": "vp9", "fps": 60}, # Dash webm audio 171: {"ext": "webm", "acodec": "vorbis", "format": "DASH audio", "abr": 128}, 172: {"ext": "webm", "acodec": "vorbis", "format": "DASH audio", "abr": 256}, # Dash webm audio with opus inside 249: {"ext": "webm", "format": "DASH audio", "acodec": "opus", "abr": 50}, 250: {"ext": "webm", "format": "DASH audio", "acodec": "opus", "abr": 70}, 251: {"ext": "webm", "format": "DASH audio", "acodec": "opus", "abr": 160}, # av01 video only formats sometimes served with "unknown" codecs 394: {"ext": "mp4", "height": 144, "vcodec": "av01.0.05M.08"}, 395: {"ext": "mp4", "height": 240, "vcodec": "av01.0.05M.08"}, 396: {"ext": "mp4", "height": 360, "vcodec": "av01.0.05M.08"}, 397: {"ext": "mp4", "height": 480, "vcodec": "av01.0.05M.08"}, }