Is there a way to get the HLS URL for YouTube live streams like this one https://www.youtube.com/embed/WVZpCdHq3Qg
I've tried the typical get_video_info methods but they don't seem to work with live streams.
If your video is housed on a site like YouTube, look for the "Embed" box on the video's page. This box will tell you the URL of the streaming movie in question.
Open YouTube Live Control Room. Click the Stream tab or schedule a new stream. Under “Stream settings,” in the "Stream URL" field, click the lock icon to show the RTMPS URL. Copy the Stream URL.
You need to get the HLS m3u8 playlist files from the video's manifest. There are ways to do this by hand, but for simplicity I'll be using the youtube-dl tool to get this information. I'll be using this live stream as an example: https://www.youtube.com/watch?v=_Gtc-GtLlTk
First, get the formats of the video:
➜ ~ youtube-dl --list-formats https://www.youtube.com/watch\?v\=_Gtc-GtLlTk [youtube] _Gtc-GtLlTk: Downloading webpage [youtube] _Gtc-GtLlTk: Downloading video info webpage [youtube] Downloading multifeed video (_Gtc-GtLlTk, aflWCT1tYL0) - add --no-playlist to just download video _Gtc-GtLlTk [download] Downloading playlist: Southwest Florida Eagle Cam [youtube] playlist Southwest Florida Eagle Cam: Collected 2 video ids (downloading 2 of them) [download] Downloading video 1 of 2 [youtube] _Gtc-GtLlTk: Downloading webpage [youtube] _Gtc-GtLlTk: Downloading video info webpage [youtube] _Gtc-GtLlTk: Extracting video information [youtube] _Gtc-GtLlTk: Downloading formats manifest [youtube] _Gtc-GtLlTk: Downloading DASH manifest [info] Available formats for _Gtc-GtLlTk: format code extension resolution note 140 m4a audio only DASH audio 144k , m4a_dash container, mp4a.40.2@128k (48000Hz) 160 mp4 256x144 DASH video 124k , avc1.42c00b, 30fps, video only 133 mp4 426x240 DASH video 258k , avc1.4d4015, 30fps, video only 134 mp4 640x360 DASH video 646k , avc1.4d401e, 30fps, video only 135 mp4 854x480 DASH video 1171k , avc1.4d401f, 30fps, video only 136 mp4 1280x720 DASH video 2326k , avc1.4d401f, 30fps, video only 137 mp4 1920x1080 DASH video 4347k , avc1.640028, 30fps, video only 151 mp4 72p HLS , h264, aac @ 24k 132 mp4 240p HLS , h264, aac @ 48k 92 mp4 240p HLS , h264, aac @ 48k 93 mp4 360p HLS , h264, aac @128k 94 mp4 480p HLS , h264, aac @128k 95 mp4 720p HLS , h264, aac @256k 96 mp4 1080p HLS , h264, aac @256k (best) [download] Downloading video 2 of 2 [youtube] aflWCT1tYL0: Downloading webpage [youtube] aflWCT1tYL0: Downloading video info webpage [youtube] aflWCT1tYL0: Extracting video information [youtube] aflWCT1tYL0: Downloading formats manifest [youtube] aflWCT1tYL0: Downloading DASH manifest [info] Available formats for aflWCT1tYL0: format code extension resolution note 140 m4a audio only DASH audio 144k , m4a_dash container, mp4a.40.2@128k (48000Hz) 160 mp4 256x144 DASH video 124k , avc1.42c00b, 30fps, video only 133 mp4 426x240 DASH video 258k , avc1.4d4015, 30fps, video only 134 mp4 640x360 DASH video 646k , avc1.4d401e, 30fps, video only 135 mp4 854x480 DASH video 1171k , avc1.4d401f, 30fps, video only 136 mp4 1280x720 DASH video 2326k , avc1.4d401f, 30fps, video only 151 mp4 72p HLS , h264, aac @ 24k 132 mp4 240p HLS , h264, aac @ 48k 92 mp4 240p HLS , h264, aac @ 48k 93 mp4 360p HLS , h264, aac @128k 94 mp4 480p HLS , h264, aac @128k 95 mp4 720p HLS , h264, aac @256k (best) [download] Finished downloading playlist: Southwest Florida Eagle Cam
In this case, there are two videos because the live stream contains two cameras. From here, we need to get the HLS URL for a specific stream. Use -f
to pass in the format you would like to watch, and -g
to get that stream's URL:
➜ ~ youtube-dl -f 95 -g https://www.youtube.com/watch\?v\=_Gtc-GtLlTk https://manifest.googlevideo.com/api/manifest/hls_playlist/id/_Gtc-GtLlTk.2/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/gir/yes/dg_shard/X0d0Yy1HdExsVGsuMg.95/hls_chunk_host/r1---sn-ab5l6ne6.googlevideo.com/playlist_type/LIVE/gcr/us/pmbypass/yes/mm/32/mn/sn-ab5l6ne6/ms/lv/mv/m/pl/20/dover/3/sver/3/fexp/9408495,9410706,9416126,9418581,9420452,9422596,9422780,9423059,9423661,9423662,9425349,9425959,9426661,9426720,9427325,9428422,9429306/upn/xmL7zNht848/mt/1456412649/ip/64.125.177.124/ipbits/0/expire/1456434315/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,gir,dg_shard,hls_chunk_host,playlist_type,gcr,pmbypass,mm,mn,ms,mv,pl/signature/7E48A727654105FF82E158154FCBA7569D52521B.1FA117183C664F00B7508DDB81274644F520C27F/key/dg_yt0/playlist/index.m3u8 https://manifest.googlevideo.com/api/manifest/hls_playlist/id/aflWCT1tYL0.2/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/gir/yes/dg_shard/YWZsV0NUMXRZTDAuMg.95/hls_chunk_host/r13---sn-ab5l6n7y.googlevideo.com/pmbypass/yes/playlist_type/LIVE/gcr/us/mm/32/mn/sn-ab5l6n7y/ms/lv/mv/m/pl/20/dover/3/sver/3/upn/vdBkD9lrq8Q/fexp/9408495,9410706,9416126,9418581,9420452,9422596,9422780,9423059,9423661,9423662,9425349,9425959,9426661,9426720,9427325,9428422,9429306/mt/1456412649/ip/64.125.177.124/ipbits/0/expire/1456434316/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,gir,dg_shard,hls_chunk_host,pmbypass,playlist_type,gcr,mm,mn,ms,mv,pl/signature/4E83CD2DB23C2331CE349CE9AFE806C8293A01ED.880FD2E253FAC8FA56FAA304C78BD1D62F9D22B4/key/dg_yt0/playlist/index.m3u8
These are your HLS m3u8 playlists, one for each camera associated with the live stream.
Without youtube-dl, your flow might look like this:
Take your video id and make a GET request to the get_video_info
endpoint:
HTTP GET: https://www.youtube.com/get_video_info?&video_id=_Gtc-GtLlTk&el=info&ps=default&eurl=&gl=US&hl=en
In the response, the hlsvp
value will be the link to the m3u8 HLS playlist:
https://manifest.googlevideo.com/api/manifest/hls_variant/maudio/1/ipbits/0/key/yt6/ip/64.125.177.124/gcr/us/source/yt_live_broadcast/upn/BYS1YGuQtYI/id/_Gtc-GtLlTk.2/fexp/9416126%2C9416984%2C9417367%2C9420452%2C9422596%2C9423039%2C9423661%2C9423662%2C9423923%2C9425346%2C9427672%2C9428946%2C9429162/sparams/gcr%2Cid%2Cip%2Cipbits%2Citag%2Cmaudio%2Cplaylist_type%2Cpmbypass%2Csource%2Cexpire/sver/3/expire/1456449859/pmbypass/yes/playlist_type/LIVE/itag/0/signature/1E6874232CCAC397B601051699A03DC5A32F66D9.1CABCD9BFC87A2A886A29B86CF877077DD1AEEAA/file/index.m3u8
This URL return to player actual video_id
https://www.youtube.com/embed/live_stream?channel=UCkA21M22vGK9GtAvq3DvSlA
Where UCkA21M22vGK9GtAvq3DvSlA is your channel id. You can find it inside YouTube account on "My Channel" link.
or here https://www.youtube.com/account_advanced
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With