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