-
-
Notifications
You must be signed in to change notification settings - Fork 465
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
Cannot get stream manifest of a video that is still being processed #734
Comments
Ok, the download works now so my theory seems to be correct (YouTube reaaaally took it's time with this one). I'll still leave the issue open because the underlying problem still exists |
You are likely correct. The challenge is that there's only a very small window where this issue is observed, so it's hard to test against it. I think, when the video is being processed, it may be possible to fetch it via segmented streams available in DASH, but it's currently not supported. And I'm not sure if that's actually going to work at all. |
You can test that using any live stream, it gives the same error as reported... |
Here's the output from a live video at VideoController.cs, at line 93 ( {
"responseContext": {
"visitorData": "Cgs3Q2tIVk5jcXhVTSiI54qpBjIICgJERRICEgA%3D",
"maxAgeSeconds": 0
},
"playabilityStatus": {
"status": "OK",
"playableInEmbed": true
},
"streamingData": {
"expiresInSeconds": "21540",
"dashManifestUrl": "https://manifest.googlevideo.com/api/manifest/dash/expire/1696794600/ei/iLMiZbfjEsCxx_APzLmNMA/ip/2003%3Acb%3Ad71b%3Ac477%3A3d7f%3A3d1b%3A7946%3A7b99/id/1U72z0ByXhI.2/source/yt_live_broadcast/requiressl/yes/tx/24554065/txs/24554063%2C24554064%2C24554065%2C24554066%2C24554067%2C24554068/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/vprv/1/pacing/0/itag_bl/374%2C375%2C376%2C377%2C384%2C385%2C407%2C408%2C409%2C410%2C411%2C412%2C557%2C558%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24007246/beids/24350018/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Ctx%2Ctxs%2Cas%2Cvprv%2Citag%2Cplaylist_type/sig/AGM4YrMwRQIhAJ_SMjWqBUi7_s_KZS8IT158gCG42xllIqK9CZcdVjQFAiB2aDzioUQANSe_2xP5epo90fCtyGHBYu9S2InXPyJZtw%3D%3D",
"hlsManifestUrl": "https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1696794600/ei/iLMiZbfjEsCxx_APzLmNMA/ip/2003%3Acb%3Ad71b%3Ac477%3A3d7f%3A3d1b%3A7946%3A7b99/id/1U72z0ByXhI.2/source/yt_live_broadcast/requiressl/yes/tx/24554065/txs/24554063%2C24554064%2C24554065%2C24554066%2C24554067%2C24554068/hfr/1/vprv/1/go/1/pacing/0/nvgoi/1/keepalive/yes/fexp/24007246/beids/24350018/dover/11/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Ctx%2Ctxs%2Chfr%2Cvprv%2Cgo%2Citag%2Cplaylist_type/sig/AGM4YrMwRQIgKeIkQeBc1vYMlZ6tWRx4xQMH1IHo1NOmrkKfyikoS2wCIQC5Ci6-E3RL9wofeM0Wa5X3Wdi8KqzW14VAhH00HGxcgw%3D%3D/file/index.m3u8"
},
"heartbeatParams": {
"intervalMilliseconds": "30000",
"softFailOnError": true,
"heartbeatServerData": "GAIgAg=="
},
"playbackTracking": {
"videostatsPlaybackUrl": {
"baseUrl": "https://s.youtube.com/api/stats/playback?cl=570785414&docid=1U72z0ByXhI&ei=iLMiZbfjEsCxx_APzLmNMA&fexp=v1%2C23946420%2C19788%2C17088%2C14760%2C6588%2C2602%2C26922%2C2780%2C40293%2C3497%2C40082%2C14490%2C4937%2C40927%2C4952%2C1251%2C54001%2C7577%2C6588%2C2%2C30243%2C2876%2C2307%2C76608%2C10019%2C311%2C4643%2C3060%2C5063%2C38113%2C22531%2C6998%2C7%2C5%2C510%2C5034%2C4851%2C7565%2C9132%2C15763%2C1563%2C3878%2C159%2C8639%2C3029%2C650%2C1045%2C3951%2C2417%2C10685%2C4125%2C330%2C712%2C85%2C825%2C2783%2C15%2C2063%2C489%2C2%2C1151%2C505%2C5816%2C3227%2C1088%2C3330%2C21785%2C376%2C108935%2C1910%2C1701%2C14625703%2C786%2C11678694%2C382%2C2158%2C2571%2C1034%2C119%2C868%2C720%2C75%2C150%2C192%2C385%2C41%2C1760%2C1115%2C1650%2C1170%2C759%2C114%2C543%2C184%2C944%2C2950%2C1007%2C888%2C418%2C374%2C616%2C1048%2C2%2C2438%2C124%2C977%2C1080%2C769%2C138%2C178%2C949%2C359%2C2992&live=dvr&ns=yt&plid=AAYHNL_zD0e_yqQm&delay=5&el=detailpage&len=0&of=qNw2AYySOk82WMEedkE6EA&vm=CAEQARgEOjJBQWpSVTZsZ3BENFI4TFVhcjhGVFhtbnNmT0hsTHBYRlhfU2lkRHoxbzducWxGeUNUUWJyQVBta0tESjQwTG5CN045Mk5FQ0ptenF6WE1ySmxhMEEtQWpiNVpBUURzTTQxWmFRbE1Rb3VlUDM0T1RSOEJFVXlqd0ljREI5bnZ6Y2Rhc05Ja2cxRnlCWFVzVkFlcW9vZEtXbC1pdWZNTFFpaE4tRUpBaAE",
"headers": [
{
"headerType": "USER_AUTH"
},
{
"headerType": "VISITOR_ID"
}
]
},
"videostatsDelayplayUrl": {
"baseUrl": "https://s.youtube.com/api/stats/delayplay?cl=570785414&docid=1U72z0ByXhI&ei=iLMiZbfjEsCxx_APzLmNMA&fexp=v1%2C23946420%2C19788%2C17088%2C14760%2C6588%2C2602%2C26922%2C2780%2C40293%2C3497%2C40082%2C14490%2C4937%2C40927%2C4952%2C1251%2C54001%2C7577%2C6588%2C2%2C30243%2C2876%2C2307%2C76608%2C10019%2C311%2C4643%2C3060%2C5063%2C38113%2C22531%2C6998%2C7%2C5%2C510%2C5034%2C4851%2C7565%2C9132%2C15763%2C1563%2C3878%2C159%2C8639%2C3029%2C650%2C1045%2C3951%2C2417%2C10685%2C4125%2C330%2C712%2C85%2C825%2C2783%2C15%2C2063%2C489%2C2%2C1151%2C505%2C5816%2C3227%2C1088%2C3330%2C21785%2C376%2C108935%2C1910%2C1701%2C14625703%2C786%2C11678694%2C382%2C2158%2C2571%2C1034%2C119%2C868%2C720%2C75%2C150%2C192%2C385%2C41%2C1760%2C1115%2C1650%2C1170%2C759%2C114%2C543%2C184%2C944%2C2950%2C1007%2C888%2C418%2C374%2C616%2C1048%2C2%2C2438%2C124%2C977%2C1080%2C769%2C138%2C178%2C949%2C359%2C2992&live=dvr&ns=yt&plid=AAYHNL_zD0e_yqQm&delay=5&el=detailpage&len=0&of=qNw2AYySOk82WMEedkE6EA&vm=CAEQARgEOjJBQWpSVTZsZ3BENFI4TFVhcjhGVFhtbnNmT0hsTHBYRlhfU2lkRHoxbzducWxGeUNUUWJyQVBta0tESjQwTG5CN045Mk5FQ0ptenF6WE1ySmxhMEEtQWpiNVpBUURzTTQxWmFRbE1Rb3VlUDM0T1RSOEJFVXlqd0ljREI5bnZ6Y2Rhc05Ja2cxRnlCWFVzVkFlcW9vZEtXbC1pdWZNTFFpaE4tRUpBaAE",
"elapsedMediaTimeSeconds": 5,
"headers": [
{
"headerType": "USER_AUTH"
},
{
"headerType": "VISITOR_ID"
}
]
},
"videostatsWatchtimeUrl": {
"baseUrl": "https://s.youtube.com/api/stats/watchtime?cl=570785414&docid=1U72z0ByXhI&ei=iLMiZbfjEsCxx_APzLmNMA&fexp=v1%2C23946420%2C19788%2C17088%2C14760%2C6588%2C2602%2C26922%2C2780%2C40293%2C3497%2C40082%2C14490%2C4937%2C40927%2C4952%2C1251%2C54001%2C7577%2C6588%2C2%2C30243%2C2876%2C2307%2C76608%2C10019%2C311%2C4643%2C3060%2C5063%2C38113%2C22531%2C6998%2C7%2C5%2C510%2C5034%2C4851%2C7565%2C9132%2C15763%2C1563%2C3878%2C159%2C8639%2C3029%2C650%2C1045%2C3951%2C2417%2C10685%2C4125%2C330%2C712%2C85%2C825%2C2783%2C15%2C2063%2C489%2C2%2C1151%2C505%2C5816%2C3227%2C1088%2C3330%2C21785%2C376%2C108935%2C1910%2C1701%2C14625703%2C786%2C11678694%2C382%2C2158%2C2571%2C1034%2C119%2C868%2C720%2C75%2C150%2C192%2C385%2C41%2C1760%2C1115%2C1650%2C1170%2C759%2C114%2C543%2C184%2C944%2C2950%2C1007%2C888%2C418%2C374%2C616%2C1048%2C2%2C2438%2C124%2C977%2C1080%2C769%2C138%2C178%2C949%2C359%2C2992&live=dvr&ns=yt&plid=AAYHNL_zD0e_yqQm&el=detailpage&len=0&of=qNw2AYySOk82WMEedkE6EA&vm=CAEQARgEOjJBQWpSVTZsZ3BENFI4TFVhcjhGVFhtbnNmT0hsTHBYRlhfU2lkRHoxbzducWxGeUNUUWJyQVBta0tESjQwTG5CN045Mk5FQ0ptenF6WE1ySmxhMEEtQWpiNVpBUURzTTQxWmFRbE1Rb3VlUDM0T1RSOEJFVXlqd0ljREI5bnZ6Y2Rhc05Ja2cxRnlCWFVzVkFlcW9vZEtXbC1pdWZNTFFpaE4tRUpBaAE",
"headers": [
{
"headerType": "USER_AUTH"
},
{
"headerType": "VISITOR_ID"
}
]
},
"ptrackingUrl": {
"baseUrl": "https://www.youtube.com/ptracking?ei=iLMiZbfjEsCxx_APzLmNMA&oid=82ZyHtardRAbOneTQSSPtg&plid=AAYHNL_zD0e_yqQm&pltype=contentlive&ptchn=rkRKvn30Y7tzuyOBduzKXA&ptk=youtube_single&video_id=1U72z0ByXhI",
"headers": [
{
"headerType": "USER_AUTH"
},
{
"headerType": "VISITOR_ID"
}
]
},
"qoeUrl": {
"baseUrl": "https://s.youtube.com/api/stats/qoe?cl=570785414&docid=1U72z0ByXhI&ei=iLMiZbfjEsCxx_APzLmNMA&event=streamingstats&fexp=v1%2C23946420%2C19788%2C17088%2C14760%2C6588%2C2602%2C26922%2C2780%2C40293%2C3497%2C40082%2C14490%2C4937%2C40927%2C4952%2C1251%2C54001%2C7577%2C6588%2C2%2C30243%2C2876%2C2307%2C76608%2C10019%2C311%2C4643%2C3060%2C5063%2C38113%2C22531%2C6998%2C7%2C5%2C510%2C5034%2C4851%2C7565%2C9132%2C15763%2C1563%2C3878%2C159%2C8639%2C3029%2C650%2C1045%2C3951%2C2417%2C10685%2C4125%2C330%2C712%2C85%2C825%2C2783%2C15%2C2063%2C489%2C2%2C1151%2C505%2C5816%2C3227%2C1088%2C3330%2C21785%2C376%2C108935%2C1910%2C1701%2C14625703%2C786%2C11678694%2C382%2C2158%2C2571%2C1034%2C119%2C868%2C720%2C75%2C150%2C192%2C385%2C41%2C1760%2C1115%2C1650%2C1170%2C759%2C114%2C543%2C184%2C944%2C2950%2C1007%2C888%2C418%2C374%2C616%2C1048%2C2%2C2438%2C124%2C977%2C1080%2C769%2C138%2C178%2C949%2C359%2C2992&live=dvr&ns=yt&plid=AAYHNL_zD0e_yqQm",
"headers": [
{
"headerType": "USER_AUTH"
},
{
"headerType": "VISITOR_ID"
}
]
},
"youtubeRemarketingUrl": {
"baseUrl": "https://www.youtube.com/pagead/viewthroughconversion/962985656/?backend=innertube&cname=30&cver=1_9&foc_id=rkRKvn30Y7tzuyOBduzKXA&label=followon_view&ptype=no_rmkt&random=586117383",
"elapsedMediaTimeSeconds": 0,
"headers": [
{
"headerType": "USER_AUTH"
},
{
"headerType": "VISITOR_ID"
}
]
}
},
"videoDetails": {
"videoId": "1U72z0ByXhI",
"title": "STOCK CAR 2023 AO VIVO | 9ª ETAPA - BUENOS AIRES / ARGENTINA",
"lengthSeconds": "0",
"isLive": true,
"keywords": [
"stockcar",
"stock car 2020",
"Toyota Corolla",
"Chevrolet Cruze",
"stock car 2021",
"calendario 2021",
"Stock Car ao vivo"
],
"channelId": "UCrkRKvn30Y7tzuyOBduzKXA",
"isOwnerViewing": false,
"shortDescription": "#StockCar #StockCar2023\n\nSite Oficial: https://www.stockproseries.com.br/\n\nFacebook: https://www.facebook.com/stockcaroficial/\nInstagram: https://www.instagram.com/stock_car/\nTwitter: https://twitter.com/stock_car\nTikTok: https://www.tiktok.com/@stockcarbrasil",
"isCrawlable": true,
"isLiveDvrEnabled": true,
"thumbnail": {
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/1U72z0ByXhI/default.jpg?v=65206c7c",
"width": 120,
"height": 90
},
{
"url": "https://i.ytimg.com/vi/1U72z0ByXhI/mqdefault.jpg?v=65206c7c",
"width": 320,
"height": 180
},
{
"url": "https://i.ytimg.com/vi/1U72z0ByXhI/hqdefault.jpg?v=65206c7c",
"width": 480,
"height": 360
},
{
"url": "https://i.ytimg.com/vi/1U72z0ByXhI/sddefault.jpg?v=65206c7c",
"width": 640,
"height": 480
}
]
},
"allowRatings": true,
"viewCount": "4455",
"author": "Stock Car",
"isLowLatencyLiveStream": false,
"isPrivate": false,
"isUnpluggedCorpus": false,
"latencyClass": "MDE_STREAM_OPTIMIZATIONS_RENDERER_LATENCY_NORMAL",
"isLiveContent": true
},
"playerConfig": {
"audioConfig": {
"enablePerFormatLoudness": false
},
"exoPlayerConfig": {
"useExoPlayer": true,
"useAdaptiveBitrate": true,
"maxInitialByteRate": 91136,
"minDurationForQualityIncreaseMs": 15000,
"maxDurationForQualityDecreaseMs": 500,
"minDurationToRetainAfterDiscardMs": 21000,
"lowWatermarkMs": 15000,
"highWatermarkMs": 30000,
"lowPoolLoad": 0.8,
"highPoolLoad": 0.8,
"sufficientBandwidthOverhead": 0.67,
"bufferChunkSizeKb": 50,
"httpConnectTimeoutMs": 16000,
"httpReadTimeoutMs": 8000,
"numAudioSegmentsPerFetch": 1,
"numVideoSegmentsPerFetch": 2,
"minDurationForPlaybackStartMs": 2500,
"enableExoplayerReuse": false,
"useRadioTypeForInitialQualitySelection": true,
"blacklistFormatOnError": false,
"enableBandaidHttpDataSource": true,
"httpLoadTimeoutMs": 18000,
"canPlayHdDrm": true,
"videoBufferSegmentCount": 389,
"audioBufferSegmentCount": 38,
"useAbruptSplicing": false,
"minRetryCount": 10,
"minChunksNeededToPreferOffline": 2,
"secondsToMaxAggressiveness": 0,
"enableSurfaceviewResizeWorkaround": true,
"enableVp9IfThresholdsPass": false,
"matchQualityToViewportOnUnfullscreen": false,
"lowAudioQualityConnTypes": [
"MOBILE_CONNECTION_TYPE_CELLULAR_2G",
"MOBILE_CONNECTION_TYPE_CELLULAR_3G"
],
"useDashForLiveStreams": true,
"enableLibvpxVideoTrackRenderer": false,
"lowAudioQualityBandwidthThresholdBps": 0,
"enableVariableSpeedPlayback": false,
"preferOnesieBufferedFormat": false,
"minimumBandwidthSampleBytes": 4096,
"useDashForOtfAndCompletedLiveStreams": true,
"disableCacheAwareVideoFormatEvaluation": false,
"useLiveDvrForDashLiveStreams": true,
"cronetResetTimeoutOnRedirects": true,
"emitVideoDecoderChangeEvents": true,
"onesieVideoBufferLoadTimeoutMs": "0",
"onesieVideoBufferReadTimeoutMs": "0",
"libvpxEnableGl": false,
"enableVp9EncryptedIfThresholdsPass": false,
"enableOpus": false,
"usePredictedBuffer": true,
"maxReadAheadMediaTimeMs": 120000,
"useMediaTimeCappedLoadControl": true,
"allowCacheOverrideToLowerQualitiesWithinRange": 0,
"allowDroppingUndecodedFrames": true,
"minDurationForPlaybackRestartMs": 5000,
"serverProvidedBandwidthHeader": "",
"liveOnlyPegStrategy": "LIVE_ONLY_PEG_STRATEGY_DO_NOT_PEG",
"enableRedirectorHostFallback": false,
"enableHighlyAvailableFormatFallbackOnPcr": false,
"recordTrackRendererTimingEvents": false,
"minErrorsForRedirectorHostFallback": 0,
"nonHardwareMediaCodecNames": [
"OMX.ffmpeg.vp9.decoder",
"OMX.google.vp9.decoder",
"c2.android.vp9.decoder",
"OMX.Intel.sw_vd.vp9",
"OMX.MTK.VIDEO.DECODER.SW.VP9",
"c2.mtk.sw.vp9.decoder",
"OMX.google.av1.decoder",
"c2.android.av1.decoder",
"OMX.sprd.av1.decoder"
],
"enableVp9IfInHardware": false,
"enableVp9EncryptedIfInHardware": false,
"useOpusMedAsLowQualityAudio": false,
"minErrorsForPcrFallback": 0,
"useStickyRedirectHttpDataSource": false,
"onlyVideoBandwidth": false,
"useRedirectorOnNetworkChange": false,
"enableMaxReadaheadAbrThreshold": true,
"cacheCheckDirectoryWritabilityOnce": false,
"predictorType": "PREDICTOR_TYPE_NEAREST_RANK",
"slidingPercentile": 0.5,
"slidingWindowSize": 12,
"maxFrameDropIntervalMs": 100,
"ignoreLoadTimeoutForFallback": false,
"serverBweMultiplier": 1,
"drmMaxKeyfetchDelayMs": 0,
"maxResolutionForWhiteNoise": 0,
"whiteNoiseRenderEffectMode": "RENDER_EFFECT_MODE_UNKNOWN",
"enableLibvpxHdr": false,
"enableCacheAwareStreamSelection": false,
"useExoCronetDataSource": true,
"whiteNoiseScale": 0,
"whiteNoiseOffset": 0,
"preventVideoFrameLaggingWithLibvpx": false,
"enableMediaCodecHdr": false,
"enableMediaCodecSwHdr": false,
"liveOnlyWindowChunks": 10,
"bearerMinDurationToRetainAfterDiscardMs": [
21000,
21000,
21000,
21000,
120000,
120000,
90000,
120000
],
"forceWidevineL3": false,
"useAverageBitrate": false,
"useMedialibAudioTrackRendererForLive": true,
"useExoPlayerV2": false,
"logMediaRequestEventsToCsi": false,
"onesieFixNonZeroStartTimeFormatSelection": false,
"liveOnlyReadaheadStepSizeChunks": 1,
"liveOnlyBufferHealthHalfLifeSeconds": 60,
"liveOnlyMinBufferHealthRatio": 0.75,
"liveOnlyMinLatencyToSeekRatio": 3,
"manifestlessPartialChunkStrategy": "ANDROID_PARTIAL_CHUNK_STRATEGY_RETRY_RANGE",
"ignoreViewportSizeWhenSticky": false,
"enableLibvpxFallback": false,
"disableLibvpxLoopFilter": false,
"enableVpxMediaView": false,
"hdrMinScreenBrightness": 0,
"hdrMaxScreenBrightnessThreshold": 0,
"onesieDataSourceAboveCacheDataSource": false,
"httpNonplayerLoadTimeoutMs": 72000,
"numVideoSegmentsPerFetchStrategy": "NUM_SEGMENTS_PER_FETCH_STRATEGY_CONSTANT",
"maxVideoDurationPerFetchMs": 12000,
"maxVideoEstimatedLoadDurationMs": -1,
"estimatedServerClockHalfLife": 5,
"estimatedServerClockStrictOffset": false,
"minReadAheadMediaTimeMs": 0,
"readAheadGrowthRate": 0,
"useDynamicReadAhead": false,
"useYtVodMediaSourceForV2": false,
"enableV2Gapless": false,
"useLiveHeadTimeMillis": false,
"allowTrackSelectionWithUpdatedVideoItagsForExoV2": false,
"maxAllowableTimeBeforeMediaTimeUpdateSec": 0,
"enableDynamicHdr": false,
"v2PerformEarlyStreamSelection": false,
"v2UsePlaybackStreamSelectionResult": false,
"v2MinTimeBetweenAbrReevaluationMs": 2000,
"avoidReusePlaybackAcrossLoadvideos": false,
"enableInfiniteNetworkLoadingRetries": false,
"reportExoPlayerStateOnTransition": false,
"manifestlessSequenceMethod": "MANIFESTLESS_SEQUENCE_METHOD_LIVE_HEAD",
"useLiveHeadWindow": false,
"enableDynamicHdrInHardware": false,
"ultralowAudioQualityBandwidthThresholdBps": 0,
"ignoreUnneededSeeksToLiveHead": false,
"drmMetricsQoeLoggingFraction": 0.01,
"useTimeSeriesBufferPrediction": false,
"slidingPercentileScalar": 1,
"minAdaptiveVideoQuality": 0,
"platypusBackBufferDurationMs": 60000
}
},
"trackingParams": "CAAQu2kiEwi3x8r_y-aBAxXA2BEIHcxcAwY=",
"adBreakHeartbeatParams": "Q0FBJTNE"
} |
Also if it helps, I noticed that PlayerResponse.cs, line 137, you search for "formats" value, which doesn't exists in a live stream. {
"expiresInSeconds": "21540",
"dashManifestUrl": "https://manifest.googlevideo.com/api/manifest/dash/expire/1696797629/ei/Xb8iZfuEGobs1wLlsL_IAw/ip/2003%3Acb%3Ad71b%3Ac477%3A3d7f%3A3d1b%3A7946%3A7b99/id/1U72z0ByXhI.2/source/yt_live_broadcast/requiressl/yes/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/vprv/1/pacing/0/itag_bl/374%2C375%2C376%2C377%2C384%2C385%2C407%2C408%2C409%2C410%2C411%2C412%2C557%2C558%2C612%2C613%2C617%2C619%2C623%2C628%2C655%2C656%2C660%2C662%2C666%2C671/keepalive/yes/fexp/24007246/beids/24350018/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cas%2Cvprv%2Citag%2Cplaylist_type/sig/AGM4YrMwRQIhAIyd-sNaFr4QybfTtK9W4A5KfHBte4MNjuSWXFHREgaAAiA3xU-B63EYxaXnqoRqVh9Oitu-WaRSYHhQBtlg_qAY6w%3D%3D",
"hlsManifestUrl": "https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1696797629/ei/Xb8iZfuEGobs1wLlsL_IAw/ip/2003%3Acb%3Ad71b%3Ac477%3A3d7f%3A3d1b%3A7946%3A7b99/id/1U72z0ByXhI.2/source/yt_live_broadcast/requiressl/yes/hfr/1/vprv/1/go/1/pacing/0/nvgoi/1/keepalive/yes/fexp/24007246/beids/24350018/dover/11/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cvprv%2Cgo%2Citag%2Cplaylist_type/sig/AGM4YrMwRAIgZ4Qdx-VN-CcepyEaKL7SskbVQ627DtHer_OqDAjB3dQCIGkdVP4DOI-eYExHdng7oMnegA1etxsf_b3rxN4a-XB6/file/index.m3u8"
} |
Was that for a finished livestream? |
no, it was during the livestream... |
Yeah, an ongoing livestream can only be fetched through the HLS manifest. You can use the |
Version
Newest (6.3.3)
Platform
Windows 10
Steps to reproduce
Using "https://www.youtube.com/watch?v=oKbKHd7nd0o" as Link. The second line of code from above will then throw an error
Details
YoutubeExplode always worked for me without any issues. Even now, it still works with pretty much every video. Only this one doesn't seem to work
I do sort of have a theory why this might be the case though. The stream is still relatively new (It ended about 8 hours ago) and the chat is still not visible so it hasn't been processed by YouTube. So maybe YTExplode just can't get the manifest for streams which are still being processed. Can someone confirm if that's correct?
If it is, of course it would be a nice feature to be able to download unprocessed streams but if that's too hard to do, that's okay but I think this should at least be noted somewhere
The exception:
YoutubeExplode.Exceptions.VideoUnplayableException: Video 'oKbKHd7nd0o' does not contain any playable streams.
at YoutubeExplode.Videos.Streams.StreamClient.GetManifestAsync(VideoId videoId, CancellationToken cancellationToken) in /_/YoutubeExplode/Videos/Streams/StreamClient.cs:line 246
Checklist
The text was updated successfully, but these errors were encountered: